1. 다중행 함수

함수 설명
SUM([옵션] 데이터) - 데이터의 합을 반환한다.
- DISTINCT를 지정할 경우 중복 데이터를 제외하고 계산하며, ALL의 경우에는 모든 데이터를 계산한다.
- 옵션을 생략할 경우 ALL을 적용한 것과 같은 결과를 반환한다.
COUNT([옵션] 데이터) - 데이터의 개수를 반환한다.
- DISTINCT를 지정할 경우 중복 데이터를 제외하고 계산하며, ALL의 경우에는 모든 데이터를 계산한다.
- 옵션을 생략할 경우 ALL을 적용한 것과 같은 결과를 반환한다.
MAX([옵션] 데이터) - 데이터 중 최댓값을 반환한다.
- DISTINCT 혹은 ALL 옵션을 지정할 수 있으나, 옵션을 생략한 것과 같은 결과를 반환한다.
MIN([옵션] 데이터) - 데이터 중 최솟값을 반환한다.
- DISTINCT 혹은 ALL 옵션을 지정할 수 있으나, 옵션을 생략한 것과 같은 결과를 반환한다.
AVG([옵션] 데이터) - 데이터의 평균값을 반환한다.
- DISTINCT를 지정할 경우 중복 데이터를 제외하고 계산하며, ALL의 경우에는 모든 데이터를 계산한다.
- 옵션을 생략할 경우 ALL을 적용한 것과 같은 결과를 반환한다.
/* SUM 함수 예시 */
SELECT SUM(DISTINCT SAL), SUM(ALL SAL), SUM(SAL)
FROM EMP;

/* COUNT 함수 예시 */
SELECT COUNT(DISTINCT SAL), COUNT(ALL SAL), COUNT(SAL)
FROM EMP;

/* MAX 함수 예시 */
SELECT MAX(HIREDATE)
FROM EMP
WHERE DEPTNO = 20;

/* MIN 함수 예시 */
SELECT MIN(HIREDATE)
FROM EMP
WHERE DEPTNO = 20;

/* AVG 함수 예시 */
SELECT AVG(DISTNCT SAL)
FROM EMP
WHERE DEPTNO = 20;

 

2. GROUP BY절과 HAVING절

키워드 설명
GROUP BY - 특정 열 또는 데이터를 기준으로 데이터를 그룹으로 묶는다.
- 여러 개의 열을 기준으로 할 수 있다. 먼저 지정한 열로 대그룹을 나누고 그 다음 지정한 열로 소그룹을 나눈다.
- 별칭이 인식되지 않기 때문에, 열 이름이나 연산식을 그대로 지정해야 한다.
- 다중행 함수를 사용하지 않은 일반 열은 GROUP BY절에 명시하지 않으면 SELECT절에서 사용할 수 없다.
HAVING - GROUP BY절을 사용해 그룹화된 결과 중 출력 그룹을 선별하는 조건식을 지정한다.
- 별칭이 인식되지 않기 때문에, 열 이름이나 연산식을 그대로 지정해야 한다.
/* GROUP BY절 예시 */
SELECT DEPTNO, JOB, AVG(SAL)
FROM EMP
GROUP BY DEPTNO, JOB;

/* HAVING절 예시 */
SELECT DEPTNO, JOB, AVG(SAL)
FROM EMP
WHERE SAL<=3000
GROUP BY DEPTNO, JOB
HAVING AVG(SAL)>=2000
ORDER BY DEPTNO, JOB;

 

2.1 WHERE절과 HAVING절의 차이점

- WHERE절은 출력 대상 행을 제한하고, HAVING절은 그룹화된 대상을 출력에서 제한한다.

- WHERE절이 GROUP BY절, HAVING절보다 먼저 실행된다. 즉, GROUP BY절을 수행하기 전에 WHERE절의 조건식으로 출력 행의 제한이 먼저 이루어진다.

 

참고

- 『오라클로 배우는 데이터베이스 입문』

'Database' 카테고리의 다른 글

JOIN 종류  (0) 2021.10.18
Oracle 그룹화 함수  (0) 2021.10.15
Oracle 단일행 함수  (0) 2021.10.12
Oracle 연산자  (0) 2021.10.07
Oracle 다중 INSERT  (0) 2021.10.05