변환 함수
- 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'포맷)
일반 함수
- NVL (expr1, expr2)
expr2 null일때 대체하고 싶은 값
데이터 유형 같아야 함
사용 가능 데이터 유형 : 날짜, 문자, 숫자
- NVL2 (expr1, expr2, expr3)
expr1 null이 아니면 expr2 반환
expr1 null이면 expr3 반환
- NULLIF (expr1, expr2)
expr1 = expr2 -> null 반환
expr1 <> expr2 -> expr1 반환
- COALESCE (expr1, expr2, ..., exprn)
expr1 null아니면 expr1 반환
expr1 null이면 expr2 expr2 null이면 expr3
처음 null이 아닌값 반환하는 함수...
단일행 함수 정리
- 문자 함수
- 대소문자 변환함수
- 문자 조작함수
- 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번
2번
3번
4번
(==)
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
문제) employees 테이블로부터 전 직원의 커미션 평균을 출력하는 구문을 작성하시오
nvl 함수 활용하지 않으면 null값 빼고 평균 계산됨.
문제) 80번 부서에 소속된 사원 중 커미션을 받는 사원의 수를 출력하시오.
select count(department_id)
from employees;
=> 부서에 소속된 사원의 수
select count(distinct department_id)
from employees;
=> 부서의 수
GROUP BY절
- 그룹함수와 group by절 사용 시 규칙(문법)
select절의 컬럼리스트들 중 그룹함수에 포함된 컬럼과 그룹함수에 포함되지 않은 컬럼이 같이 출력
되려면 그룹함수에 포함되지 않은 컬럼은 반드시 group by절에 포함되어 있어야 함!!!
having 절
조건절
1) where : 행 제한 조건문을 작성하는 곳
2) having : 행그룹 제한 조건문을 작성하는 곳
(그룹 함수가 포함된 조건문을 작성하는 곳)
연습문제
1번
2번
QUIZ
1번
3번
4번
7번
8번