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 |