Nombre d'occurrences du nombre de SQL

J'ai une table comme celle-ci:

c1 | c2
a | 2
b | 1
a | 1
b | 3
a | 2

comment countz-vous pour get des résultats comme celui-ci

col1 | col2 | nombre d'occurrences
a | 1 | 1
a | 2 | 2
b | 3 | 1

Et après avoir obtenu la valeur maximale comme ceci:

col1 col2
a | 2
b | 1

Le count 1 est votre ami, le count * conduit à un time de chargement plus long.

 SELECT C1, C2, COUNT(1) AS numberofoccurrences FROM TABLE GROUP BY C1, C2 

Désolé pour le retard. Pour que Max utilise ce qui suit;

 ; WITH CTE AS( SELECT c1, c2, COUNT(1) AS NoOfOccurence FROM TEST GROUP BY c1, c2 ), BTE AS( SELECT c1, c2, ROW_NUMBER() OVER(PARTITION BY c1 ORDER BY NoOfOccurence DESC) AS RN FROM CTE )SELECT c1, c2 FROM BTE WHERE RN = 1 

Voici une solution complète qui inclut la sortie de valeur maximale finale. Notez également qu'un index sur c1 et c2 améliorera considérablement les performances.

 -- Sample data -- including an id for use as a tie-breaker for a unique pk/clustered index on c1 & c2 DECLARE @tbl TABLE (id int identity not null, c1 char(1), c2 tinyint, primary key (c1,c2,id)); INSERT @tbl VALUES ('a', 2), ('b', 1), ('a', 1), ('b', 3), ('a', 2); -- Solution SELECT c1, MaxOccurs = MAX(c) FROM ( SELECT c1, c2, c = COUNT(1) FROM @tbl GROUP BY c1, c2 ) x GROUP BY c1;