본문 바로가기
IT/MYSQL

MYSQL - SUM, MAX, MIN, AVG, COUNT 집계함수 데이터 조회하기

by 꿀코 2023. 2. 25.
반응형

MYSQL에는 SUM, MAX, MIN, AVG, COUNT 등 다양한 집계함수가 있습니다. MYSQL 8 버전에서는 이런 집계함수와 윈도우함수를 함께 사용하여 더 쉽고 편리하게 합계, 최대값, 최소값 등을 구할 수 있기 때문에 다양한 예제와 함께 알아보도록 하겠습니다.

 

 

기본 문법

윈도우함수 OVER는 GROUP BY와 비슷한 역할을 하지만 조회된 기존 데이터에 추가로 집계한 값을 보여준다는 점에서 더 효율적일 수 있습니다.

  • SLELECT 집계함수(컬럼) OVER(PARTITION BY 그룹컬럼 ORDER BY 순서컬럼)

 

1. 집계함수

MAX() : 최대값, MIN : 최소값, SUM() : 합계, AVG : 평균, COUNT() : 개수

 

 1) 그룹별 최대값 조회

SELECT ID, NAME, DEPT, SALARY, MAX(SALARY) OVER(PARTITION BY DEPT) FROM SALARY;

그룹별 MAX 값
그룹별 최대값

 

 2) 그룹별 중복 항목 개수 조회

SELECT ID, NAME, DEPT, SALARY, COUNT(SALARY) OVER(PARTITION BY DEPT) FROM SALARY;

그룹별 중복 갯수
그룹별 중복 항목수

 

3) 그룹별 합계

SELECT ID, NAME, DEPT, SALARY, SUM(SALARY) OVER(PARTITION BY DEPT) FROM SALARY;

그룹별 합계
그룹별 합계

 

4) 그룹별 누적 합계

SELECT ID, NAME, DEPT, SALARY, SUM(SALARY) OVER(PARTITION BY DEPT ORDER BY SALARY) FROM SALARY;

그룹별 누적 합계
그룹별 누적 합계

 

 

2. 윈도우함수와 GROUP BY 비교

위에서 설명드린 것처럼 윈도우함수는 기존의 결과에 GROUP BY와 ORDER BY 결과 컬럼을 추가로 조회할 수 있기 때문에 쿼리를 한 번만 사용하고도 RAW DATA와 결과를 한 번에 볼 수 있다는 장점이 있습니다.

# RAW DATA 조회
SELECT ID, NAME, DEPT, SALARY FROM SALARY;
# 그룹별 합계 조회
SELECT DEPT, SUM(SALARY) FROM SALARY GROUP BY DEPT;

GROUP BY 결과
GROUP BY 결과

 

위의 쿼리를 조회한 결과를 보면 각각의 쿼리를 조회해야만 전체 데이터와 그룹별 합계를 조회할 수 있지만, 앞서 살펴보았던 SUM() OVER() 윈도우함수를 사용하면 각각의 결과를 한 번에 볼 수 있다는 걸 확인할 수 있었습니다.

반응형

댓글