-
[Oracle] GROUP BY, HAVING 절RDS/Oracle 2019. 3. 10. 00:11반응형
집계 함수(Aggregate Function)
1.여러 행들의 그룹이 모여서 그룹당 단 하나의 결과를 돌려주는 함수입니다.
2.GROUP BY 절은 행들을 소그룹화 합니다.
3.SELECT 절, HAVING 절, ORDER BY 절에 사용할 수 있습니다.
집계 함수 종류
COUNT(*) - NULL 값을 포함한 행의 수를 출력합니다.
COUNT(표현식) - 표현식의 값이 NULL 값인 것을 제외한 행의 수를 출력합니다.
SUM([DISTINCT | ALL] 표현식) - 표현식의 NULL 값을 제외한 합계를 출력합니다.
AVG([DISTINCT | ALL] 표현식) - 표현식의 NULL 값을 제외한 평균을 출력합니다.
MAX([DISTINCT | ALL] 표현식) - 표현식의 최대값을 출력합니다.(문자, 날짜 데이터 타입도 사용 가능)
MIN([DISTINCT | ALL] 표현식) - 표현식의 최소값을 출력합니다.(문자, 날짜 데이터 타입도 사용 가능)
COUNT(*) 함수에 사용된 와일드카드(*)는 전체 컬럼을 뜻하는데 전체 컬럼이 NULL인 행인 존재할 수 없기 때문에 결국 COUNT(*)는 전체 행의 개수를 출력합니다.
집계 함수 예시
123456789101112131415161718192021SELECT COUNT(COMM)FROM EMP;SELECT COUNT(JOB)FROM EMP;SELECT SUM(SAL)FROM EMP;SELECT AVG(SAL)FROM EMP;SELECT MAX(SAL), MIN(SAL)FROM EMP;SELECT MAX(ENAME), MIN(ENAME), MAX(HIREDATE), MIN(HIREDATE)FROM EMP;cs GROUP BY 절
FROM 절과 WHERE 절 뒤에 오며, 데이터들을 작은 그룹으로 분류하여 소그룹에 대한 항목별로 통걔 정보를 얻을 때 추가로 사용됩니다.
12345SELECT [DISTINCT] 컬럼명 [ALIAS명]FROM 테이블명[WHERE 조건식][GROUP BY 컬럼명이나 표현식][HAVING 그룹조건식];cs GROUP BY 절 예시
123456789101112131415161718-- 부서별 평균 급여SELECT AVG(SAL)FROM EMPGROUP BY DEPTNO;-- 부서별 전체 사원 인원수와 커미션을 받은 사원 인원수SELECT DEPTNO, COUNT(*), COUNT(COMM)FROM EMPGROUP BY DEPTNO;-- 부서별 최대, 최소 급여SELECT DEPTNO, MAX(SAL), MIN(SAL)FROM EMPGROUP BY DEPTNO;cs HAVING 절
WHERE 절이 SELECT 문에서 조건 검색을 위해서 사용한다면 HAVING 절은 GROUP BY 절에 의해 생성된 결과 중 원하는 조건을 검색할 때 사용됩니다. 즉, HAVING 절은 WHERE 절과 비슷하지만 그룹을 나타내는 결과 집합의 행에 조건이 적용된다는 점에서 차이가 있습니다.
HAVING 절 예시
1234567891011121314-- 부서별 평균 급여가 2000 이상인 부서SELECT DEPTNO, AVG(SAL)FROM EMPGROUP BY DEPTNOHAVING AVG(SAL) >= 2000;-- 급여가 1000 이상인 인원에 대한 평균 급여가 2000 이상인 부서SELECT DEPTNO, AVG(SAL)FROM EMPWHERE SAL >= 1000GROUP BY DEPTNOHAVING AVG(SAL) >= 2000;cs 반응형'RDS > Oracle' 카테고리의 다른 글
[Oracle] SELECT 문장 실행 순서 (0) 2019.03.10 [Oracle] ORDER BY 절 (0) 2019.03.10 [Oracle] 함수(Function) - 변환형 함수 (0) 2019.03.03 [Oracle] 함수(Function) - 날짜형 함수 (0) 2019.03.03 [Oracle] 함수(Function) - 숫자형 함수 (0) 2019.03.02