[MSSQL] 최소값, 최대값 구하기 (MIN, MAX 함수)
- 데이터베이스/MSSQL
- 2022. 6. 24.
SQL Server에서 최솟값과 최댓값을 구하기 위해선는 MIN, MAX 함수를 사용하면 됩니다. MIN, MAX 함수는 집계 함수이며 GROUP BY 절과 함께 많이 사용됩니다. OVER 절과 함께 사용하면 분석 함수의 역할을 하며, 조금 더 다양한 쿼리문을 작성할 수 있습니다. 아래의 예제를 참고하여 첨부된 파일을 다운로드하여서 직접 연습해 보세요.
목차 |
전체 데이터 최솟값, 최댓값 구하기
최솟값 구하기 (MIN)
SELECT MIN(sal)
FROM emp
WHERE job = 'SALESMAN'
직업(job)이 "SALESMAN"인 직원의 최저급여(sal)를 조회한다.
MIN() 함수는 최솟값을 반환한다.
최댓값 구하기 (MAX)
SELECT MAX(sal)
FROM emp
WHERE job = 'SALESMAN'
직업(job)이 "SALESMAN"인 직원의 최고 급여(sal)를 조회한다.
MAX() 함수는 최댓값을 반환한다.
최솟값, 최댓값 동시에 구하기
SELECT MIN(sal) AS min_sal
, MAX(sal) AS max_sal
FROM emp
WHERE job = 'SALESMAN'
직업(job)이 "SALESMAN"인 직원의 최저급여와 최고 급여를 조회한다.
집계 합수(MIN, MAX, SUM, COUNT..)는 SELECT 절에 동시에 사용할 수 있다.
GROUP BY 절을 사용하지 않으면 집계 함수(MIN, MAX)만 SELECT 절에 사용할 수 있으며, 일반 칼럼(job)을 같이 사용하기 위해서는 GROUP BY 절을 사용해서 그룹으로 집계를 해야 한다.
그룹별 최솟값, 최댓값 구하기 (GROUP BY 절)
그룹별 최솟값 구하기 (MIN)
SELECT job
, MIN(sal) AS min_sal
FROM emp
GROUP BY job
직업(job) 별로 최저급여(sal)를 조회한다.
그룹별 최댓값 구하기 (MAX)
SELECT job
, MAX(sal) AS max_sal
FROM emp
GROUP BY job
직업(job) 별로 최고 급여(sal)를 조회한다.
그룹별 최솟값, 최댓값 동시에 구하기
SELECT job
, MIN(sal) AS min_sal
, MAX(sal) AS max_sal
FROM emp
GROUP BY job
직업(job) 별로 최저급여와 최고 급여를 조회한다.
분석함수를 사용하여 최솟값, 최댓값 구하기 (OVER 절)
조회된 데이터 전체에서 최솟값, 최댓값 구하기
SELECT empno
, ename
, job
, sal
, MIN(sal) OVER() AS min_sal
, MAX(sal) OVER() AS max_sal
FROM emp
WHERE job = 'SALESMAN'
데이터를 그룹으로 묶지 않고 조회된 데이터에서 최솟값과 최댓값을 구하여 표시할 수 있다.
OVER 절과 함께 MIN, MAX 함수를 사용하면 분석함수의 역할을 한다.
조회된 데이터 전체에서 그룹별(PARTITION BY) 최솟값, 최댓값 구하기
SELECT empno
, ename
, job
, sal
, MIN(sal) OVER(PARTITION BY job) AS min_sal
, MAX(sal) OVER(PARTITION BY job) AS max_sal
FROM emp
WHERE job IN ('MANAGER', 'SALESMAN')
OVER 절에서 PARTITION BY 절을 함께 사용하면 조회된 데이터에서 그룹별로 최솟값과, 최댓값을 구하여 표시할 수 있다.
GROUP BY 절과 OVER 절의 용도가 조금 헷갈릴 수 있지만, 조금만 이해를 하면 쿼리문을 아주 효율적으로 작성할 수 있습니다. GROUP BY 절은 SELECT 절에 그룹 칼럼만 작성할 수 있지만 OVER 절을 사용하면 SELECT 절에 원하는 칼럼을 자유롭게 작성할 수 있는 장점이 있습니다.