GROUP BY(그룹화)는 SELECT 절에서 집계함수와 단순칼럼이 복합적으로 선택될 때 사용됩니다.

 

 


 

 

1. GROUP BY

 

GROUP BY절은 NULL을 제외하지 않고 그룹화하여 로우의 가장 아래에 생성합니다.

 

먼저 SELECT 절에 스칼라를 선택하는 쿼리를 작성하였습니다.

스칼라는 쿼리의 결과가 하나인 것을 의미합니다.

 

SELECT
    MAX(salary)
FROM
    employees;

 

스칼라

 

결과에서도 알 수 있듯이,

집계함수가 단독적으로 사용된다면 그룹화는 필요 없습니다.

 

 

하지만 집계함수와 단순칼럼이나 표현식이 함께 사용된다면 GROUP BY 절이 사용되야 합니다.

고용된 날짜 별 총 급여를 쿼리로 작성하였습니다.

 

SELECT
    TO_CHAR(hire_date, 'YYYY/MM') AS 고용연월,
    SUM(salary)   AS "총 급여"
FROM
    employees
GROUP BY
    TO_CHAR(hire_date, 'YYYY/MM')
ORDER BY
    1 ASC;

 

위 쿼리는 TO_CHAR를 그룹화하여 해당 고용날짜에 해당하는 사원의 총 급여에 대한 쿼리입니다.

만약 SELECT절에 추가적인 칼럼이나 표현식이 선택되면 GROUP BY절에서 추가적인 그룹화가 필요합니다.

 

 

 

2. HAVING

 

HAVING절은 그룹화와 함께 사용됩니다.

HAVING절은 GROUP BY를 통해 그룹화하고 로우(row, 행)가 아닌 그룹을 제외시킬 수 있습니다.

또한 WHERE절에서는 사용이 불가능한 집계함수를 HAVING절에서는 사용할 수 있습니다.

 

SELECT
    TO_CHAR(hire_date, 'YYYY/MM') AS 고용연월,
    SUM(salary)   AS "총 급여"
FROM
    employees
GROUP BY
    TO_CHAR(hire_date, 'YYYY/MM')
HAVING
    SUM(salary) >= 10000
ORDER BY
    1 ASC;

 

위 쿼리처럼 HAVING절은 집계함수 사용이 가능하며, WHERE절과 같은 그룹에 대한 필터링을 수행합니다.

 

 

 

 

 

 

 

 

'Database > SQL' 카테고리의 다른 글

정규화  (0) 2023.09.06
외부 조인  (0) 2023.08.21
인라인 뷰  (0) 2023.08.17
외래 키  (1) 2023.08.16
데이터 사전  (0) 2023.08.16

+ Recent posts