SQL 그룹함수 사용 방법 (max, min, avg...)
max
당연히 최댓값을 출력하는 함수입니다.
예제) 직업이 salesman인 사람들 중에 연봉이 가장 높은 사람을 조회하시오
SELECT MAX(sal)
FROM emp
WHERE job = 'SALESMAN'
쉽습니다. 조회하고자 하는 칼럼명에 max만 씌워주면 끝입니다.
SELECT job, max(sal)
From emp
Where job = 'SALESMAN';
그럼 위 구문은 어떻게 될까요?
실행되지 않습니다.
그 이유는 job은 여러개의 값을 출력하려고 하고 max(sal)의 경우 한 개의 값을 출력하기 때문에 충돌 납니다.
따라서 아래와 같이 작성해야 합니다.
SELECT job, max(sal)
From emp
Where job = 'SALESMAN'
Group by job;
설명을 하자면 group by job으로 직업 별로 묶어준다는 의미입니다.
예제) 직업과 직업 별 연봉 최댓값을 조회하시오
Select job, max(sal)
From emp
Group by job;
min
minimum 즉, 최솟값 출력하는 함수.
max를 같으니 예제하나 만 보고 갈게요.
예제) emp 테이블에서 가장 적은 연봉 값을 조회하시오
Select min(sal)
From emp;
예제) 부서 번호,별 최대 월급을 출력하는데 20번 부서번호는 제외하고 출력하고
부서번호 별 최대 월급이 높은 것부터 출력하시오
Select deptno, max(sal) "최대 월급"
From emp
Where deptno != 20
Group by deptno
Order by "최대 월급" desc;
>> select절에서 보통은 " " 를 생략하고 써도 되지만 위와 같이 공백이나 특수 문자가 포함된 경우에는 큰 따옴표를 써줘야 제대로 칼럼 별칭 기능이 들어갑니다.
사용 가능한 특수 문자는 _ 와 $ 이거랍니다.
avg
평균값 구해주는 함수
예제) select avg(sal) from emp;
Sal
3000
2000
Null
1000
(3000+2000+1000) / 3 = 2000
>> 그룹 함수는 기본적으로 null 값을 무시하고 위와 같이 계산됩니다.