STUDY/SQL

집계함수의 사용

Kululu_ 2021. 4. 16. 20:21

집계함수란?

여러 행으로부터 하나의 결과값을 반환하는 함수입니다.

대표적으로 COUNT(), AVG(), MAX(), MIN(), SUM() 등이 있습니다.

 

집계함수의 사용

1) SELECT 절에서의 사용

- GROUP BY를 이용해 데이터들을 그룹으로 묶은 뒤, 각 그룹별로 카운팅을 하거나 특정 컬럼의 평균, 합 등을 계산하는 데에 주로 쓰입니다.

 

회원ID 별 총 주문금액을 계산해보겠습니다.

SELECT 회원ID, SUM(주문금액) AS 합계
FROM 주문
GROUP BY 회원ID;

회원ID 별 총 주문수를 계산해보겠습니다.

SELECT 회원ID, COUNT(*) AS CNT
FROM 주문
GROUP BY 회원ID;

 

집계함수는 nested function처럼 사용할 수는 없습니다.

위에서 계산된 CNT의 총합을 구하려고 한다면 아래와 같이 하면 에러가 나는 것입니다.

SELECT SUM(COUNT(*))
FROM 주문
GROUP BY 회원ID;

만약 CNT에 집계함수를 적용하고 싶다면 서브쿼리 형태로 사용해야 합니다.

SELECT AVG(CNT)
FROM
    (SELECT COUNT(*) AS CNT
    FROM 주문
    GROUP BY 회원ID) AS TAB;

 

2) 조건절에서의 사용

집계함수의 결과를 조건으로 걸어 원하는 레코드만 추출해서 확인할 수도 있습니다.

조건절은 WHERE절과 HAVING절이 있는데 HAVING절에서만 집계함수를 조건으로 사용할 수 있습니다.

 

- 에러가 나는 구문 - 

SELECT 회원ID, CONUT(*) AS CNT
FROM 주문
WHERE COUNT(*) > 3
GROUP BY 회원ID

 

 

- 제대로 작동하는 구문 -

SELECT 회원ID, COUNT(*) AS CNT
FROM 주문
GROUP BY 회원ID
HAVING COUNT(*) > 3;