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;