지난 포스팅에서 SQL 함수에 대해서 다뤄봤습니다.
https://healthdevelop.tistory.com/entry/db4
이번 시간에는 SQL 집계 함수와 정렬에 대해서 다뤄보고자 합니다.
▶ ORDER BY
ORDER BY란,
SELECT한 칼럼에 대해 정렬을 할 때 작성하는 구문으로
SELECT 구문의 가장 마지막에 작성하며
실행 순서 역시 가장 마지막에 수행됩니다.
표현식은 아래와 같습니다.
▶ GROUP BY
GROUP BY란,,
산출하고자 하는 결과를 통합시켜주는데요.
그룹 함수는 단 한 개의 결과 값만 산출하기 때문에
그룹이 여러 개일 경우 오류가 발생합니다.
따라서, 여러 개의 결과 값을 산출하기 위해 그룹 함수가 적용될 그룹의 기준을
GROUP BY절에 기술하여 사용해야 합니다.
EX) GROUP BY 적용/미적용 예
예시는 아래와 같습니다.
▶ HAVING
그룹 함수로 값을 구해올 그룹에 대해 조건을 설정할 때 HAVING절에 기술합니다.
(WHERE절은 SELECT에 대한 조건)
예시는 아래와 같습니다.
▶ ROLLUP과 CUBE
ROLLUP과 CUBE는
그룹 별 산출한 결과 값의 집계를 계산하는 함수인데요.
ROLLUP이란,
인자로 전달받은 그룹 중 가장 먼저 지정한 그룹별로
추가적 집계 결과 반환하는 함수입니다.
CUBE란,
인자로 지정된 그룹들로 가능한 모든 조합 별로 집계한 결과 반환하는 함수입니다.
예시를 통해 이해를 해봅시다.
위와 같이 ROULLUP을 사용했을 때,
DEPT_CODE와 JOB_CODE 별로 합계를 나타내고
추가적으로 집계함수도 적용되어 조회됩니다.
위와 같이 CUBE를 사용했을 때,
DEPT_CODE와 JOB_CODE 별로 가능한 모든 조합을 조회합니다.
▶ 집합 연산자
집합 연산자란,
여러 개의 SELECT 결과물을 하나의 쿼리로 만드는 연산자인데요.
그림으로 보면 아래와 같습니다.
수학의 집합 연산과 똑같습니다.
자세한 설명은 아래에서 차근히 설명하겠습니다.
UNION
UNION 연산자는,
여러 개의 쿼리 결과를 합치는 연산자로 중복된 영역은 제외하여 합칩니다.
예시 및 결과는 아래와 같습니다.
INTERSECT
INTERSECT 연산자는,
여러 개의 SELECT 결과에서 공통된 부분만 결과로 추출(교집합)합니다.
예시 및 결과는 아래와 같습니다.
UNION ALL
UNION ALL 연산자는,
여러 쿼리 결과를 합치는 연산자로 중복된 영역 모두 포함하여 합칩니다.
예시 및 결과는 아래와 같습니다.
MINUS
MINUS 연산자는,
선행 SELECT 결과에서 다음 SELECT 결과와 겹치는 부분을 제외한
나머지 부분을 추출(차집합)합니다.
예시 및 결과는 아래와 같습니다.