그룹함수
- 그룹함수란 단일 행 함수와 달리 여러 행에 대해 함수가 적용되어 하나의 결과를 나타내는 함수.
- 아직 배우진 않았지만 group by 절과는 다르다. group by 절은 여러 행을 그룹화하는 것이지만 그룹 함수는 단일 행에 대해서 결과를 내주는 것이다.
SELECT 그룹 함수 ( 열 ) FROM 테이블 [WHERE 조건식]
- 그룹 함수의 종류
함수 |
설명 |
예 |
COUNT |
행 개수를 셈 |
COUNT ( salary ) |
SUM |
합계 |
SUM ( salary ) |
AVG |
평균 |
AVG ( salary ) |
MAX |
최댓값 |
MAX ( salary ) |
MIN |
최솟값 |
MIN ( salary ) |
그룹함수들을 예제로 알아보자
예제 테이블 ( user )
index |
name |
level |
salary |
1 |
홍길동 |
3 |
600 |
2 |
고길동 |
5 |
300 |
3 |
아무개 |
3 |
200 |
4 |
루피 |
7 |
900 |
5 |
이기영 |
5 |
450 |
6 |
호빵맨 |
4 |
170 |
7 |
세균맨 |
4 |
1300 |
COUNT ( ) 행의 개수를 구함
select count (*) as '행의 개수' from user;
SUM ( ) 합계
select SUM (salary) as '합계' from user;
AVG ( ) 합계
select AVG (salary) as '평균' from user;
MAX ( ) 최댓값
select MAX (salary) as '최댓값' from user;
MIN ( ) 최댓값
select MIN (salary) as '최솟값' from user;
! 그렇다면 위의 예제를 이용해서 조건에 해당하는 행들끼리의 그룹함수를 사용할 수 있다. 예제를 보자 ( 테이블 동일.. )
SELECT COUNT(*) as '행의 갯수' FROM user WHERE LEVEL = 3;
SELECT SUM(salary) as '합계' FROM user WHERE LEVEL = 3;
SELECT SUM(salary) AS '합계', COUNT(salary) AS '개수', ROUND(AVG(salary)) AS '평균' FROM user WHERE LEVEL = 3;
#AVG( )를 감싼 ROUND( ) 함수는 그룹함수가 아닌 반올림 역할을 해줍니다!!