데이터타입 구분없이 사용할 수 있는 함수
NVL
입력 받은 컬럼의 값이 NULL값이 아닌 경우 기존의 값을 출력하고, NULL값인 경우 NVL 함수에서 지정한 값으로 대체되어 출력하는 함수.
컬럼이 가진 기존의 값과 NULL값의 대체 값이 같은 컬럼에 출력되므로 컬럼과 NULL값 대체값의 데이터 타입이 일치해야한다.
NVL2
첫번째 표현식을 검사해서 null이 아니면 두 번째 표현식을 반환하고 null 이면 세 번째 표현식 반환
NULLIF
expr1 과 expr2 를 비교해서 두표현식이 같으면 null을 반환하고 두 표현식이 다르면 expr1 을 반환
COALESCE 함수
NVL 함수보다 여러 대체값을 가질 수 있음
null이 아닌 첫번째 표현식 반환
1
2
3
4
5
6
7
8
9
10
|
SELECT last_name, NVL(TO_CHAR(commission_pct), TO_CHAR('No Commission')) "Comm"
FROM employees
LAST_NAME Comm
--------------- ------------
Livingston .2
Grant .15
Johnson .1
Taylor No Commission
Fleaur No Commission
|
cs |
AVG | 평균값 |
COUNT | 행개수 |
MAX | 최대값 |
MIN | 최소값 |
STDDEV | 표준편차 |
SUM | 합계 |
VARIANCE | 분산 |
GROUP BY 절과 HAVING 절
-그룹단위로 값을 입력 받아 연산하는 함수
- NULL값을 가진 행은 연산에서 제외한다.
GROUP BY 절
- 테이블의 행을 그룹으로 묶을 때 그룹을 묶는 기준을 설정하는 절
- 기준 컬럼의 값이 동일한 행끼리 하나의 그룹으로 묶는다
- 기준 컬럼의 값이 그룹의 이름이 된다.
- 쿼리구문에 WHERE절이 있는 경우 WHERE로 행을 먼저 선택한 뒤 그룹이 묶이게 된다.
- 그룹 함수를 사용한 경우 SELECT 절에는 그룹 함수, GROUP BY절에 명시된 컬럼만 올 수 있다.
HAVING절
- GROUP BY절을 통해 만들어진 그룹에 제한을 거는 절(명시된 조건을 만족하는 그룹만 선택)
- HAVING절의 조건의 기준으로 그룹함수만 사용가능하다.
- WHERE절에는 그룹함수를 기준으로 사용할 수 없다.
각 절들의 실행 순서
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
SELECT job_id, MAX(salary) MAX, MIN(salary) MIN, SUM(salary) TOTAL, AVG(salary) AVG
FROM employees
GROUP BY job_id;
JOB_ID MAX MIN TOTAL AVG
---------- ---------- ---------- ---------- ----------
IT_PROG 9000 4200 28800 5760
AC_MGR 12008 12008 12008 12008
AC_ACCOUNT 8300 8300 8300 8300
ST_MAN 8200 5800 36400 7280
PU_MAN 11000 11000 11000 11000
AD_ASST 4400 4400 4400 4400
SELECT manager_id, MIN(salary) MIN
FROM employees
WHERE manager_id IS
NOT null GROUP
BY manager_id HAVING MIN(salary) >= 6000
ORDER BY MIN(salary) desc;
MANAGER_ID MIN
---------- ----------
102 9000
205 8300
146 7000
145 7000
108 6900
149 6200
147 6200
148 6100
201 6000
|
cs |
'DB > Oracle' 카테고리의 다른 글
TO_CHAR,NUMBER,DATE (0) | 2020.06.23 |
---|---|
시간 형식 문자 (0) | 2020.06.23 |
형식문자 (0) | 2020.06.23 |
함수 (0) | 2020.06.23 |
단일 행 함수(Single-row Function) - 수정 (0) | 2020.06.05 |