J'ai une table avec des lignes contenant une colonne appelée MySubId
. Les valeurs de cette colonne peuvent être dupliquées. Je veux trouver la valeur MySubId
et le nombre de lignes pour la valeur MySubId
qui apparaît le plus.SQL Server GROUP BY dilemme
J'ai la requête suivante:
SELECT MySubId, COUNT(MySubId) AS MySubIdCount
FROM MyTable
GROUP BY MySubId
HAVING COUNT(MySubId)=MAX(COUNT(MySubId))
Mais je reçois l'erreur:
Msg 130, Level 15, State 1, Line 4 Cannot perform an aggregate function on an expression containing an aggregate or a subquery.
est-il pas possible de le faire avec une simple requête? Dois-je incorporer une sous-requête pour calculer le MAX avant de l'utiliser dans la clause HAVING
?
Mise à jour:
Je vois beaucoup de anwers filtrer le jeu de résultats en utilisant TOP 1
, donc suis-je supposer qu'il n'y a aucun moyen d'utiliser la fonction MAX
pour filtrer cette requête pour que le maximum apparaissant MySubId
valeurs?
+1 pour prendre en compte la possibilité de plusieurs MySubId partageant le même nombre maximal. –
+1 (pour la même raison) –
+1 D'une manière ou d'une autre, je n'ai jamais su que 'avec des cravates' existait et j'ai fait ceci de façon dure pour toujours ... –