⑤ : SELECT 컬럼명 AS 별칭 계산식 함수식
① : FROM 참조할 테이블 명
② : WHERE 컬럼명 | 함수식 비교연산자 비교값
③ : GROUP BY 크룹을 묶을 컬럼명
④ : HAVING : 그룹함수식 비교연산자 비교값
⑥ : ORDER BY 컬럼명 | 별칭 | 컬럼순번 정렬방식 [ NULL FIRST | LAST ] ;
예시 1
문제 : EMPLOYEE 테이블에서 부서코드, 부서(그룹) 별 급여 합계 조회
(오류 코드)
SELECT DEPT_CODE, SUM(SALARY)
FROM EMPLOYEE;
*오류코드내용 : 실행시 GROUP BY절을 사용하지 않았을때 "ORA-00937: 단일 그룹의 그룹 함수가 아닙니다" 라는 오류코드가 나온다.
*오류코드이유 : DEPT_CODE 컬럼은 23행, SUM(SALARY)컬럼은 1행으로 하나의 표에 작성할 수 없기 때문이다.
(적합 코드)
SELECT DEPT_CODE, SUM(SALARY)
FROM EMPLOYEE
GROUP BY DEPT_CODE;
*코드해결내용 : GROUP BY 부서별로 그룹을 지어 각 그룹의 합계 조회
--- 질의 결과(공란은 null) ---
D9 17700000
D6 10100000
D1 7820000
D8 6986240
5210000
D5 15760000
D2 6520000
예시 2
문제 : EMPLOYEE 테이블에서 부서 별로 같은 직급인 사원의 급여 합계를 조회하고 부서 코드 오름차순으로 정렬
SELECT DEPT_CODE, JOB_CODE, SUM(SALARY)
FROM EMPLOYEE
GROUP BY DEPT_CODE, JOB_CODE
ORDER BY DEPT_CODE ASC;
--- 질의 결과(공란은 null) ---
D1 J6 6440000
D1 J7 1380000
D2 J4 6520000
D5 J3 3500000
D5 J5 8460000
D5 J7 3800000
D6 J3 7300000
D6 J4 2800000
D8 J6 6986240
D9 J1 8000000
D9 J2 9700000
J6 2320000
J7 2890000
문제 : 부서별 그룹의 급여 합계 중 9백만원을 초과하는 부서코드와 급여 합계 조회
SELECT DEPT_CODE, SUM(SALARY)
FROM EMPLOYEE
GROUP BY DEPT_CODE
HAVING SUM(SALARY) > 9000000;
--- 질의 결과 ---
D9 17700000
D6 10100000
D5 15760000