티스토리 뷰
Database/Oracle
[Oracle] IS NULL, IS NOT NULL, DISTINCT, GROUP BY, HAVING, NVL
best 2016. 2. 16. 10:411. IS NULL - 데이터가 NULL인 / IS NOT NULL - NULL이 아닌
1
2
3
4
5
6
7
8 |
-- 매니저가 없는 사람들의 LAST_NAME 및 JOB_ID 를 조회한다.
SELECT LAST_NAME
, JOB_ID
FROM EMPLOYEES
WHERE MANAGER_ID IS NULL
OR MANAGER_ID = '' -- 이 줄을 추가하면 완벽히 NULL인 것을 걸러낸다.
;
|
cs |
2. DISTINCT - 중복을 제거한다.
GROUP BY와의 차이점은 DISTINCT는 집계를 못한다.
GROUP BY는 집계를 할 수 있다.
실습1 - MANAGER_ID의 중복을 제거
1
2
3
4 |
SELECT DISTINCT MANAGER_ID
FROM EMPLOYEES
ORDER BY MANAGER_ID
; |
cs |
실습2 - MANAGER_ID 와 DEPARTMENT_ID의 중복제거
1
2
3
4
5
6
7 |
SELECT DISTINCT MANAGER_ID --MANAGER_ID와 DEPARTMENT_ID가 중복이 된다면 제거
, DEPARTMENT_ID
FROM EMPLOYEES
WHERE MANAGER_ID IS NOT NULL
ORDER BY MANAGER_ID
, DEPARTMENT_ID
; |
cs |
3. GROUP BY - 집계 함수를 사용할 수 있도록 그룹으로 묶는다.
SELECT에서 보고자하는 것과 GROUP BY시킬것이 같아야한다.
( NULL 값도 포함된다. )
실습1 - GROUP BY를 이용하여 DISTINCT의 실습2 와 같은 결과를 나타내도록한다.
1
2
3
4
5
6
7 |
SELECT MANAGER_ID
, DEPARTMENT_ID
FROM EMPLOYEES
GROUP BY DEPARTMENT_ID
, MANAGER_ID
ORDER BY MANAGER_ID, DEPARTMENT_ID
; |
cs |
실습2 - 부서별 사원의 수를 구한다.
1
2
3
4
5
6 |
SELECT DEPARTMENT_ID
, COUNT(EMPLOYEE_ID)
FROM EMPLOYEES
GROUP BY DEPARTMENT_ID
ORDER BY DEPARTMENT_ID
; |
cs |
4. HAVING - GROUP BY 에 대한 조건이 들어갈 수 있다.
데이터의 패턴을 분석할 때 많이 쓰인다.
실습1 - 부서별 가장 높은 연봉과, 가장 낮은 연봉, 전체 연봉의 합, 전체 연봉의 평균을 구하고, 평균이 5000이상인 것만 조회
1
2
3
4
5
6
7
8
9
10 |
SELECT DEPARTMENT_ID
, MAX(SALARY) maxSAL
, MIN(SALARY) minSAL
, SUM(SALARY) sumSAL
, ROUND(AVG(SALARY)) avgSAL
FROM EMPLOYEES
GROUP BY DEPARTMENT_ID
HAVING AVG(SALARY) >= 5000
ORDER BY DEPARTMENT_ID
; |
cs |
5.NVL(EXPR1, EXPR2) - 만약 NULL값이라면 어떻게 처리할지 알려주는 함수 ( NULL VALUE )
EXPR1이 NULL이면 EXPR2를 반환.
EXPR1의 데이터 유형에 따라 EXPR2를 정해야한다.
실습1 - 부서별 가장 높은 연봉과, 가장 낮은 연봉, 전체 연봉의 합, 전체 연봉의 평균을 구하시오.
1
2
3
4
5
6
7
8
9
10 |
SELECT NVL(DEPARTMENT_ID, 0)
, MAX(SALARY) maxSAL
, MIN(SALARY) minSAL
, SUM(SALARY) sumSAL
, ROUND(AVG(SALARY)) avgSAL
FROM EMPLOYEES
--WHERE DEPARTMENT_ID IS NOT NULL
GROUP BY DEPARTMENT_ID
ORDER BY DEPARTMENT_ID
; |
cs |
'Database > Oracle' 카테고리의 다른 글
[Oracle] 테이블 조인 (0) | 2016.02.17 |
---|---|
[Oracle] 테이블(Table) 설계 (0) | 2016.02.17 |
[Oracle] 서브쿼리 (0) | 2016.02.16 |
[Oracle] SELECT, ORDER BY, WHERE, IN, NOT, LIKE (0) | 2016.02.15 |
[Oracle] Oracle Database 다운/설치 (0) | 2016.02.15 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- jsp
- DFS
- BFS
- restfb
- list
- algorithm
- 자바
- Spring
- java
- DP
- maven
- 안드로이드 스튜디오
- table
- Baekjoon Online Judege
- 이클립스
- REDIRECT
- RequestMapping
- INSERT
- onBackPressed
- servlet
- 안드로이드 비콘
- AlertDialog.Builder
- mybatis
- controller
- boj
- sort
- order by
- indexOf
- 예외처리
- onPostExecute
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함