2011-09-15 3 views
29

속성이 a1, a2, ... 등인 테이블 Tab1이 있다고 가정합니다. 속성 중 유일하지 않은 속성입니다.GROUP BY는 어떻게 작동합니까?

다음 쿼리의 본질은 무엇입니까? 항상 한 행을 반환합니까?

SELECT a1, a2, sum(a3) FROM Tab1 GROUP BY a1, a2 
+4

a1과 a2의 고유 조합 (또는 그룹) 당 하나의 행을 반환합니다. 고유 조합이 하나만있는 경우 한 행만 얻습니다. –

+2

그리고 합계는 얼마나 많은 행이 각 그룹에서 끝났는지를 알려줄 것입니다. =) – jadarnel27

답변

51

GROUP BYGROUP BY 필드의 고유 한 조합마다 하나의 행을 반환합니다. 따라서 예에서 Tab1 행에 나타나는 (a1, a2)의 모든 고유 조합은 필드 값에 따라 그룹화 된 조합으로 행 그룹을 나타내는 행을 결과로 생성합니다. SUM()과 같은 집계 함수는 각 그룹의 구성원에 대해 계산됩니다.

13

GROUP BY 반환 GROUP BY 절에있는 필드의 고유 한 각 조합에 대한 하나의 행. 단 하나의 행을 보장하려면 COUNT, SUM, MAX - GROUP BY 절없이 집계 함수를 사용해야합니다.

3

GROUP BY 그룹이 모두 동일한 레코드입니다.

SELECT COUNT(ItemID), City 
FROM Orders 
GROUP BY City; 

---------------------------------------- 
13 Sacrmento 
23 Dallas 
87 Los Angeles 
5 Phoenix 

City 그룹화하지 않으면 그냥 ItemID의 총 수를 표시합니다.

관련 문제