- GROUP BY
- HAVING
- ROLLUP 과 CUBE
- 집합 연산자
여러 개의 값을 산출하기 위해 그룹 함수가 적용될 그룹의 기준을 기술하여 사용한다.
SELECT 문의 해석 순서는 반드시 알아두어야 한다.
5) SELECT 컬럼명|함수|계산식|리터럴 [AS 별칭]
1) FROM 테이블명
2) WHERE 조건식
3) GROUP BY 그룹으로 묶을 컬럼명|함수
4) HAVING 그룹 함수식을 이용한 조건식
6) ORDER BY 컬럼명|별칭|컬럼순서 ASC|DESC [NULLS FIRST|NULLS LAST];
GROUP BY 절을 해석해보면 다음과 같다.
3) SELECT DEPT_CODE, SUM(SALARY) -- 그룹별 SALARY 합계 조회
1) FROM EMPLOYEE -- EMPLOYEE 테이블에서
2) GROUP BY DEPT_CODE; -- DEPT_CODE 가 같은 행끼리 그룹을 지어 (7개 그룹)
그룹함수로 조회할 그룹에 대한 조건을 설정할 때 사용한다.
아래 코드만 이해하면 HAVING 절은 끝난다.
-- 부서별 평균 급여가 300백만원 이상인 부서를 조회
SELECT DEPT_CODE, AVG(SALARY)
FROM EMPLOYEE
GROUP BY DEPT_CODE
HAVING AVG(SALARY) >= 3000000 -- GROUP BY에서 묶인 그룹에 조건을 대입
ORDER BY 1;
-- 부서별 급여가 300백만 이상인 사원들의 평균 급여를 조회
SELECT DEPT_CODE, AVG(SALARY)
FROM EMPLOYEE
WHERE SALARY >= 3000000 -- EMPLOYEE 테이블의 모든 행에 조건을 대입
GROUP BY DEPT_CODE
ORDER BY 1;
집계 함수는 GROUP BY 절에 작성하여 그룹별로 산출한 결과를 집계하는 함수이다.
집계 함수에는 ROLLUP 과 CUBE 가 있다. 실무에서 사용 할 일은 거의 없다.
ROLLUP 은 그룹별로 중간 집계와 전체 합계를 처리하는 함수이다.
단독으로 사용하는 일은 거의 없다.
CUBE 는 그룹으로 지정된 모든 그룹에 대한 중간 집계와 총 합계를 처리하는 함수이다.
두 개 이상의 SELECT 결과를 이용해 하나의 결과를 조회하는 연산자이다.
집합 연산에 사용되는 SELECT 문은 SELECT 절의 타입과 순서 및 개수가 동일해야 한다.
중복된 영역은 제외하고 합친다.
중복된 영역을 포함하여 합친다.
여러 SELECT 결과에서 공통된 부분만 추출한다.
선행 SELECT 결과에서 다음 SELECT 결과와 겹치는 부분을 제외하여 추출한다.