J'ai une table avec des magasins (id, nom de la boutique, adresse), et une autre table de vente (shopid, produit, prix, quantité). Comment afficher les magasins qui ont au moins 10 ventes,

Je sais que cette ligne de code est mauvaise where count(shopsid) >= 10

select id, shopname from shops
join sales on sales.shopsid = shops.id
where count(shopsid) >= 10
order by id;

Ce que je veux voir, c'est l'identifiant des magasins qui ont au moins 10 ventes. et je ne sais pas comment faire fonctionner ce décompte, ou mettre en œuvre correctement.

0
Sachihiro 27 janv. 2019 à 16:28

3 réponses

Meilleure réponse

Vous devez utiliser group by lorsque vous utilisez la fonction d'agrégation

    Select Id,shopname
   from shops s join sales ss on ss.shopsid=s.id
   Grop by id , shopname
   Having count(*) between 10 and 15

Avoir un filtre de groupe, vous devez donc utiliser à la place où

0
Zaynul Abadin Tuhin 27 janv. 2019 à 13:46
select id, shopname from shops
join sales on sales.shopsid = shops.id
GROUP BY id, shopname
HAVING count(shopsid) >= 10
order by id;
2
FXD 27 janv. 2019 à 13:29

Si vous voulez juste les id des boutiques, vous n'avez pas besoin d'un join:

select shopsid
from sales
group by shopsid
having count(*) >= 10;
0
Gordon Linoff 27 janv. 2019 à 13:58