SQL GROUP BY 문

합계 함수(예: SUM)는 GROUP BY 문이 추가되어야 합니다.

GROUP BY 문

GROUP BY 문은 합계 함수와 함께 사용되어, 하나나 여러 개의 열에 따라 결과 집합을 그룹화합니다.

SQL GROUP BY 문법

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name

SQL GROUP BY 예제

저희는 다음 "Orders" 테이블을 가지고 있습니다:

O_Id OrderDate OrderPrice Customer
1 2008/12/29 1000 Bush
2 2008/11/23 1600 Carter
3 2008/10/05 700 Bush
4 2008/09/28 300 Bush
5 2008/08/06 2000 Adams
6 2008/07/21 100 Carter

이제 각 고객의 총 금액(총 주문)을 찾고자 합니다.

고객을 그룹화하려고 GROUP BY 문을 사용하고 싶습니다.

다음 SQL 문을 사용합니다:

SELECT Customer,SUM(OrderPrice) FROM Orders
GROUP BY Customer

결과 집합은 다음과 같습니다:

Customer SUM(OrderPrice)
Bush 2000
Carter 1700
Adams 2000

좋아 보이죠, 아닌가요?

그렇다면 GROUP BY를 제외한 경우 어떻게 될까요? 보여드리겠습니다:

SELECT Customer,SUM(OrderPrice) FROM Orders

결과 집합은 다음과 같습니다:

Customer SUM(OrderPrice)
Bush 5700
Carter 5700
Bush 5700
Bush 5700
Adams 5700
Carter 5700

위의 결과 집합은 필요한 것이 아닙니다.

그렇다면 왜 위의 SELECT 문을 사용할 수 없습니까? 다음과 같이 설명합니다: 위의 SELECT 문은 두 열(고객과 SUM(OrderPrice))을 지정했습니다. "SUM(OrderPrice)"는 하나의 값( "OrderPrice" 열의 총 합)을 반환하며, "Customer"는 6 개의 값( "Orders" 테이블의 각 행에 대해 하나의 값)을 반환합니다. 따라서 올바른 결과를 얻을 수 없습니다. 그러나 그것을 보았습니다. GROUP BY 문이 이 문제를 해결했습니다.

다른 열 하나 이상에 GROUP BY

다른 열 하나 이상에도 GROUP BY 문을 적용할 수 있습니다. 예를 들어:

SELECT Customer,OrderDate,SUM(OrderPrice) FROM Orders
GROUP BY Customer,OrderDate