변환 함수
- TO_CHAR (D -> C, N -> C)
- TO_NUMBER
[emp]
emp_id (num) | name (char) | salary (char) |
---|
100 | AAA | $17,000 |
101 | BBB | $12,000 |
102 | CCC | $9,000 |
(문제) emp 테이블로부터 사원들의 연봉을 출력하시오.
select emp_id, name, 12*salary as annsal from emp;
→ ERROR!! [salary가 char형이라 연산 불가]
to_num(salary, '$999,999') -> 9만 뽑아서 반환해줌
[수정]
select emp_id, name, 12*to_num(salary, '$999,999') as annsal from emp;
- TO_DATE
ex)to_date('2002-08-10', 'YYYY-MM-DD'포맷)
![](https://velog.velcdn.com/images/tlqdnwls/post/ca89c1a3-3315-42ce-8a40-8f28f062f3aa/image.png)
![](https://velog.velcdn.com/images/tlqdnwls/post/fb9b9318-dab4-4fe2-854e-ecc785d6cef2/image.png)
일반 함수
- NVL (expr1, expr2)
expr2 null일때 대체하고 싶은 값
데이터 유형 같아야 함
사용 가능 데이터 유형 : 날짜, 문자, 숫자
![](https://velog.velcdn.com/images/tlqdnwls/post/225180a4-b9f3-46d7-8f67-561fee8be3f9/image.png)
![](https://velog.velcdn.com/images/tlqdnwls/post/1961b39d-f136-461b-b543-544413b424b2/image.png)
- NVL2 (expr1, expr2, expr3)
expr1 null이 아니면 expr2 반환
expr1 null이면 expr3 반환
![](https://velog.velcdn.com/images/tlqdnwls/post/55235bd0-609e-4f15-a902-2d528677b8c6/image.png)
- NULLIF (expr1, expr2)
expr1 = expr2 -> null 반환
expr1 <> expr2 -> expr1 반환
![](https://velog.velcdn.com/images/tlqdnwls/post/9b756e0a-33be-4e7e-8463-1c82877bcc0e/image.png)
- COALESCE (expr1, expr2, ..., exprn)
expr1 null아니면 expr1 반환
expr1 null이면 expr2 expr2 null이면 expr3
처음 null이 아닌값 반환하는 함수...
![](https://velog.velcdn.com/images/tlqdnwls/post/f7a26cf7-c879-4880-948b-31a14182be9e/image.png)
단일행 함수 정리
- 문자 함수
- 대소문자 변환함수
- 문자 조작함수
- CONCAT(expr1,expr2)
- SUBSTR(expr1, expr2, expr3)
- LENGTH(expr1)
- INSTR(expr1, expr2)
- LPAD(expr1, expr2, expr3)
- RPAD(expr1, expr2, expr3)
- REPLACE(expr1, expr2, expr3)
- TRIM(expr1 from expr2)
- 숫자 함수
- 날짜 함수
- SYSDATE
- 날짜 조작 함수
- MONTH_BETWEEN
- ADD_MONTHS
- NEXT_DAY
- LAST_DAY
- ROUND
- ROUND(SYSDATE,'MONTH')
- ROUND(SYSDATE,'YEAR')
- TRUNC
- TRUNC(SYSDATE,'MONTH')
- TRUNC(SYSDATE,'YEAR')
- 변환 함수
- TO_CHAR (D -> C, N -> C)
- TO_NUMBER
- TO_DATE
- 일반 함수
- NVL (expr1, expr2)
- NVL2 (expr1, expr2, expr3)
- NULLIF (expr1, expr2)
- COALESCE (expr1, expr2, ..., exprn)
연습문제
1번
![](https://velog.velcdn.com/images/tlqdnwls/post/697f7984-94c2-42ea-8853-66f8e56c2e70/image.png)
![](https://velog.velcdn.com/images/tlqdnwls/post/421506b5-e8eb-42f3-99e5-78dface28012/image.png)
2번
![](https://velog.velcdn.com/images/tlqdnwls/post/95abd268-fd11-49a5-ba38-4e85dfd03cf5/image.png)
![](https://velog.velcdn.com/images/tlqdnwls/post/6b1258ab-2ec7-4db3-af43-cd4fbb1e4b0b/image.png)
3번
![](https://velog.velcdn.com/images/tlqdnwls/post/bbe34608-869a-4f28-8272-6dfe253b745d/image.png)
![](https://velog.velcdn.com/images/tlqdnwls/post/c853561f-8911-4f80-8cc1-6d4b8c47bc94/image.png)
4번
![](https://velog.velcdn.com/images/tlqdnwls/post/b88d1c5a-77d3-4adf-9021-a54d119537ba/image.png)
![](https://velog.velcdn.com/images/tlqdnwls/post/c6d5a435-db79-453f-a8a7-587d2021a791/image.png)
(==)
SELECT last_name, NVL2(commission_pct, TO_CHAR(commission_pct), 'No Commission') COMM
FROM employees;
그룹함수
null 값 제외 작업
- AVG
- COUNT
- COUNT(*) NULL O, 중복값 O
- COUNT(expr) NULL X, 중복값 O
- COUNT(distinct expr) NULL X, 중복값 X
- MAX
- MIN
- STDDEV
- SUM
- VARIANCE
![](https://velog.velcdn.com/images/tlqdnwls/post/82d6151a-eb96-401c-a854-8fe10b39dd9f/image.png)
문제) employees 테이블로부터 전 직원의 커미션 평균을 출력하는 구문을 작성하시오
![](https://velog.velcdn.com/images/tlqdnwls/post/cf5b371e-81f2-4b82-b0b2-23f3ad04ce88/image.png)
nvl 함수 활용하지 않으면 null값 빼고 평균 계산됨.
문제) 80번 부서에 소속된 사원 중 커미션을 받는 사원의 수를 출력하시오.
![](https://velog.velcdn.com/images/tlqdnwls/post/5e40112e-05cc-424b-80bc-72d330999fe8/image.png)
select count(department_id)
from employees;
=> 부서에 소속된 사원의 수
select count(distinct department_id)
from employees;
=> 부서의 수
GROUP BY절
- 그룹함수와 group by절 사용 시 규칙(문법)
select절의 컬럼리스트들 중 그룹함수에 포함된 컬럼과 그룹함수에 포함되지 않은 컬럼이 같이 출력
되려면 그룹함수에 포함되지 않은 컬럼은 반드시 group by절에 포함되어 있어야 함!!!
![](https://velog.velcdn.com/images/tlqdnwls/post/b63cd377-87d0-41c2-a1a6-d5fd34c7ec08/image.png)
![](https://velog.velcdn.com/images/tlqdnwls/post/97f9d56b-1fb4-43ee-be88-e60a6c2a30e1/image.png)
![](https://velog.velcdn.com/images/tlqdnwls/post/7d9eaf40-bb15-4db1-8806-bd6c24b797c2/image.png)
![](https://velog.velcdn.com/images/tlqdnwls/post/53269315-d413-48ff-9bbb-f7342dcd5af9/image.png)
![](https://velog.velcdn.com/images/tlqdnwls/post/7fc2c9ce-f338-413e-9ac4-7d94d4b8220b/image.png)
![](https://velog.velcdn.com/images/tlqdnwls/post/30c5ca1a-3a7d-4be9-8aa2-fee68ce0e376/image.png)
having 절
조건절
1) where : 행 제한 조건문을 작성하는 곳
2) having : 행그룹 제한 조건문을 작성하는 곳
(그룹 함수가 포함된 조건문을 작성하는 곳)
![](https://velog.velcdn.com/images/tlqdnwls/post/2d6b7de1-2b12-43f0-8e4d-a87c3c7cc3cf/image.png)
연습문제
1번
![](https://velog.velcdn.com/images/tlqdnwls/post/ccb45d7d-fe18-4008-b022-a8bb7e5d8e4f/image.png)
![](https://velog.velcdn.com/images/tlqdnwls/post/9608d667-0143-4a4f-b674-2eae36c03db4/image.png)
2번
![](https://velog.velcdn.com/images/tlqdnwls/post/3f728a8a-520c-4fa9-8364-f5c9f8539e28/image.png)
![](https://velog.velcdn.com/images/tlqdnwls/post/10deece1-64a5-408c-8141-cc2b315efa81/image.png)
QUIZ
1번
![](https://velog.velcdn.com/images/tlqdnwls/post/d48ca971-3135-4fad-a420-5314c11180f0/image.png)
![](https://velog.velcdn.com/images/tlqdnwls/post/c798a7cb-4463-433a-8182-6a8673721a4a/image.png)
3번
![](https://velog.velcdn.com/images/tlqdnwls/post/510ac8f9-6560-421a-b629-3864c6cdbed5/image.png)
![](https://velog.velcdn.com/images/tlqdnwls/post/afb65aa0-2271-4967-a63c-22588a212880/image.png)
4번
![](https://velog.velcdn.com/images/tlqdnwls/post/53ef511a-064e-43af-a1a3-a87a99bc33af/image.png)
![](https://velog.velcdn.com/images/tlqdnwls/post/4119a45c-7cb2-4436-9d76-59fa82caae7f/image.png)
7번
![](https://velog.velcdn.com/images/tlqdnwls/post/76b90d82-89a4-4166-a90b-7b3e59bc0318/image.png)
![](https://velog.velcdn.com/images/tlqdnwls/post/80f72835-078c-4542-bc61-42b3e80bb28e/image.png)
8번
![](https://velog.velcdn.com/images/tlqdnwls/post/912c28de-2898-4d7a-8f1d-ee2276fcdfb9/image.png)
![](https://velog.velcdn.com/images/tlqdnwls/post/020c5d3f-0383-4df5-a660-d88f10b4fe00/image.png)