다중행 함수
여러 행의 값을 하나의 값으로 만들어 출력
SUM, COUNT, MAX, MIN, AVG
-- SUM. ALL SAL과 SAL 합계는 동일 SELECT SUM(DISTINCT SAL), SUM(ALL SAL), SUM(SAL) FROM EMP; -- COUNT SELECT COUNT(*) FROM EMP; -- 테이블의 모든 행 수 SELECT COUNT(*) FROM EMP WHERE DEPTNO = 30; SELECT COUNT(*) FROM EMP WHERE COMM IS NOT NULL; -- MAX, MIN SELECT MAX(HIREDATE) FROM EMP WHERE DEPTNO = 10; -- 부서번호가 10이면서 가장 입사일이 최근인 사람 -- AVG SELECT AVG(DISTINCT SAL) FROM EMP WHERE DEPTNO = 30;
데이터 그룹화 GROUP BY, HAVING
GROUP BY
-- 부서번호 그룹에 따라 급여 평균 구하기 SELECT AVG(SAL), DEPTNO FROM EMP GROUP BY DEPTNO;
HAVING(조건)
-- GROUP BY절이 존재할 때에 그룹화된 결과의 범위를 제한 SELECT DEPTNO, JOB, AVG(SAL) FROM EMP GROUP BY DEPTNO, JOB -- 부서번호가 3개, JOB이 3개면 총 9행 출력 HAVING AVG(SAL) >= 2000 -- 위 9행 중 평균급여가 2000이 넘는 행만 출력 ORDER BY DEPTNO, JOB;
WHERE 절이 같이 존재하는 경우
SELECT DEPTNO, JOB, AVG(SAL) FROM EMP WHERE SAL <= 3000 -- WHERE절이 group by, having보다 먼저 수행됨. GROUP BY DEPTNO, JOB HAVING AVG(SAL) >= 2000 ORDER BY DEPTNO, JOB;