2012-01-31 5 views
1

"NumberOfArticles"집계 열의 값이 가장 큰 행을 표시하는 쿼리를 작성하려고합니다. 그러나 동일한 최대 값을 갖는 여러 행이 있으므로 쿼리에서 생성 된 행 수를 적절하게 제한하는 방법을 확신 할 수 없습니다.집계 값이 가장 큰 쿼리 결과 표시

SELECT WRT_ID, COUNT(ART_ID) AS NumberOfArticles 
FROM Articles 
GROUP BY WRT_ID 
ORDER BY NumberOfArticles DESC 

답변

1
SELECT TOP 1 WRT_ID, COUNT(ART_ID) AS NumberOfArticles 
FROM Articles 
GROUP BY WRT_ID 
ORDER BY 2 DESC 

NumberOfArticles 수가 가장 많은 행이 여러 개있는 경우 해당 관계가 포함됩니다. 묶음을 포함시키지 않고 가장 높은 NumberOfArticles 수를 가진 동그라미 중 하나만 포함하려면 하위 쿼리에 GROUP BY를 넣고 필요에 따라 ORDER BY를 변경하십시오.

SELECT TOP 1 sub.WRT_ID, sub.NumberOfArticles 
FROM (
    SELECT WRT_ID, COUNT(ART_ID) AS NumberOfArticles 
    FROM Articles 
    GROUP BY WRT_ID 
    ) AS sub 
ORDER BY 2 DESC, 1 DESC; 
0

은 당신이 할 수 있습니다 생각 :

SELECT A.WRT_ID, (SELECT MAX(B.ART_ID) FROM Articles As B WHERE B.WRT_ID = A.WRT_ID) As NumberOfArticles 
FROM Articles A 
ORDER BY 2 Desc 

이것은 당신이 질문 비록 샘플의 COUNT를 사용하고 참조 각각

을 Wrt_Id 가장 높은 Art_Id를 얻기 위해 하위 선택 사용 최대를 향해 더 많은 힌트를 제공하지만 카운트이면 다음과 같이 간단히 수정하십시오.

SELECT A.WRT_ID, (SELECT COUNT(B.ART_ID) FROM Articles As B WHERE B.WRT_ID = A.WRT_ID) As NumberOfArticles 
FROM Articles A 
ORDER BY 2 Desc 
1

당신

SELECT WRT_ID, max(ART_ID) AS NumberOfArticles 
FROM Articles 
GROUP BY NumberOfArticles 
ORDER BY NumberOfArticles DESC 
0
SELECT WRT_ID, COUNT(ART_ID) AS NumberOfArticles 
FROM Articles 
GROUP BY WRT_ID 
HAVING COUNT(ART_ID)=(SELECT MAX(t.c) FROM (SELECT WRT_ID,COUNT(ART_ID) AS c 
              FROM Articles GROUP BY WRT_ID) t) 
ORDER BY NumberOfArticles DESC 

이 당신에게 모든 최대 행을 제공이 충분히 될 수있다 생각합니다.