GROUP BY
특정 열의 값에 기반하여 행들을 그룹화하는 데 사용된다.
이 기능은 COUNT, MAX, MIN, SUM, AVG등과 같은 집계 함수와 함께 사용되어 각 그룹에 대한 통계를 계산할 때 사용된다.
GROUP BY는 Split-Apply-Combine전략으로 작동 한다.
이는 데이터 분석 과정을 잘 설명하는 개념으로 데이터를 그룹화하고 각 그룹에 대해 연산을 수행한 다음 결과를 결합하는 과정을 말한다.
- Split
전체 데이터 세트를 작은 그룹으로 분할한다.
이 분할은 GROUP BY에 지정된 열의 고유값에 따라 이루어진다.
예를 들어 GROUP BY를 사용해 제품 ID별로 데이터를 그룹화하면, 각 제품 ID에 해당하는 행들이 하나의 그룹을 형성한다.
- Apply
분할된 각 그룹에 대해 특정 연산을 적용한다.
이 연산은 집계 함수를 포함하여 각 그룹별로 계산된다.
예를 들어 각 제품 ID 그룹에 대해 판매량의 합계를 계산할 수 있다.
- Combine
Apply 단계에서 적용된 연산의 결과를 모아 새로운 결과 세트를 생성한다.
이 과정에서 각 그룹의 연산 결과는 하나의 행으로 요약되어 최종적으로 그룹별 연산 결과를 포함하는 결과 테이블이 만들어진다.
예를 들어 제품 ID별 판매량 합계를 계산한 경우 최종 결과는 각 제품 ID와 해당 판매량 합계를 보여주는 테이블이 된다.
HAVING
그룹화된 결과에 대해 특정 조건을 적용하여 필터링하는 데 사용된다.
이는 집계 함수의 결과에 기반한 조건을 포함할 수 있으며, 이러한 조건을 만족하는 그룹만을 결과로 반환한다.
WHERE과 동일하게 필터링을 하지만 WHERE의 경우 데이터를 그룹화하기 전에 개별 행에 대한 필터링을 적용하고, HAVING의 경우 데이터를 그룹화한 후 그룹에 대한 필터링을 적용하는 차이가 있다.
따라서 집계 함수의 결과를 기반으로 조건을 적용하려면 HAVING을 사용해야 한다.
아래처럼 사용하면 sales에 있는 product_id와 같은 product_id의 quantity의 합을 출력하고 합이 작은 것 부터 나열한다.
SELECT product_id, SUM(quantity) AS total_quantity
FROM sales
GROUP BY product_id
HAVING SUM(quantity) > 100;
'컴퓨터 > 데이터베이스' 카테고리의 다른 글
[데이터 베이스] WINDOW 함수 (0) | 2024.02.11 |
---|---|
[데이터 베이스] UNION & GROUPING SETS & ROLLUP (2) | 2024.02.11 |
[데이터 베이스] JOIN (1) | 2024.02.06 |
[데이터 베이스]날짜 추출하기 (1) | 2024.02.01 |
[데이터 베이스]SQL 기본 구문 (2) | 2024.01.27 |