SQL

SQL 그룹함수 사용 방법 (max, min, avg...)

crazydeer 2022. 2. 15. 21:54
반응형

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 값을 무시하고 위와 같이 계산됩니다.

반응형