bonsoir,
je cherche à faire un max d'un cout
SGBDR : SQL server
c'est quelque chose de ce style... mais :? j'arrive pas à finir...Code:
1
2
3
4 Select id, count(*) From ligne_commande group by id having count(*) > select ...
merci !
Version imprimable
bonsoir,
je cherche à faire un max d'un cout
SGBDR : SQL server
c'est quelque chose de ce style... mais :? j'arrive pas à finir...Code:
1
2
3
4 Select id, count(*) From ligne_commande group by id having count(*) > select ...
merci !
La requête suivante te ramène le nombre de lignes par id :
Si tu veux le MAX du nombre de lignes, tu peux l'obtenir ainsi :Code:
1
2
3 SELECT id, count(*) FROM ligne_commande GROUP BY id
Cette précédente requête ne te ramènera qu'une ligne (si tu as au moins une ligne avec des données valides !), tu peux donc écrire sans craintes ceci :Code:
1
2
3 SELECT MAX(COUNT(*)) FROM ligne_commande GROUP BY id
cette requête te ramenera le ou les id qui regroupent le plus grand nombre de lignes de ta table ligne_commandeCode:
1
2
3
4
5
6 SELECT id, count(*) FROM ligne_commande HAVING count(*) = (SELECT MAX(COUNT(*)) FROM ligne_commande GROUP BY id) GROUP BY id
salut !
dsler pour le retard mais il me semble que le max(count..) n'est pas autorisé avec SQL Server... On peut avec oracle par contre ! quel est la solution avec sql server ? merci !
Avec une sous-requete ?Citation:
Envoyé par chess75
BloonCode:
1
2
3
4 select max(nb) from (SELECT id, count(*) nb FROM ligne_commande GROUP BY id)
bonjour
je viens de tester cela ne marche pas non plus sur psql il renvoit l'erreur suivante :
"ERROR: aggregate function calls cannot be nested"
merci
Bonjour,
Je sais bien que ce post date de plus d'un an, mais dans les résultats Google c'est le premier lien alors je pense que la solution ne sera pas de trop ^^.
Ta requête principale retournera la valeur qui est supérieure ou égale à toutes les valeurs de la sous requête.Code:
1
2
3
4
5
6
7 SELECT id, count(*) FROM ligne_commande GROUP BY id HAVING count(*) >= ALL (SELECT count(*) FROM ligne_commande GROUP BY id)
En espérant que ça aidera quelqu'un :)
MOI perso ça m'a aidé beaucoup , merci encore :D :D
Ca marche super, et ça nous a bien aidé pour notre TD de BDD, merci :ccool:
Vraiment merci pour cette requête ...;)
Cela n'existe pas en SQL c'est une fantaisie de certains SGBDR... En effet le GROUP BY s'appliquant à toutes les opérations d'agrégation, LE MAX d'un COUNT donnerait le COUNT ce qui n'a aucun intérêt.
On peut faire cela soit par une sous requête, soit à l'aide d'un fenêtrage.
A +
Cette requête est incorrecte. La norme SQL exiqge que toute ttable, fut-elle dérivée par une sous requête, ait son propre nom. Il suffit donc de rajouter un alias de table poiur que cette re
Code:
1
2
3
4 select max(nb) from (SELECT id, count(*) nb FROM ligne_commande GROUP BY id) AS Ma_Table