본문 바로가기
DB/Oracle

일반 함수

by 태윤2 2020. 6. 23.

데이터타입 구분없이 사용할 수 있는 함수

 

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