SMALL
안녕하세요, 코린이의 코딩 학습기 채니 입니다.
개인 포스팅용으로 내용에 오류 및 잘못된 정보가 있을 수 있습니다.
FUNCTION
- 일련의 작업 절차를 모아 놓은 database 객체
- 호출 시 인자를 전달하고 리턴 값을 받아 처리
- SQL의 function은 반드시 리턴 값을 가짐
함수 유형 | |
단일행 처리 함수 |
문자 처리 함수 |
숫자 처리 함수 | |
날짜 처리 함수 | |
형변환 처리 함수 | |
기타 함수 | |
그룹 처리 함수 |
그룹마다 호출 |
그룹 처리 함수
- 전체 행을 하나의 그룹으로 처리해서 그룹 당 하나의 결과를 반환
- group by절을 통해 세부 그룹 처리 가능
- 그룹 함수의 결과와 일반 컬럼을 동시에 사용할 수 없음
- 컬럼 값이 null인 경우는 연산 처리 하지 않음
☞ sum(col)
- 해당 col을 모두 더한 값을 리턴
select
-- emp_name, --ORA-00937: not a single-group group function
sum(salary)
from
employee;
그룹함수의 결과 (sum(salary))와 일반 컬럼 (emp_name)을 동시에 사용하면
"ORA-00937: not a single-group group function" 해당 에러 메시지와 함께 오류가 뜨게 되니 주의해야 합니다.
☞ avg(col)
- 해당 col의 평균 값을 리턴
select
trunc(avg(salary))
from
employee;
☞ count(col)
- 컬럼 값이 null이 아닌 컬럼 수를 반환
select
count(emp_id),
count(emp_name),
count(dept_code), -- null 값이 있기 때문에 제외된 수를 반환
count(bonus),
count(*) -- 전채 행의 수 카운팅
from
employee;
인턴 사원 수 조회
-- 방법 1)
select
count(*) - count(dept_code) 인턴수
from
employee;
-- 방법 2)
select
count(*) 인턴수
from
employee
where
dept_code is null;
-- 방법 3)
select
count(case when dept_code is null then 1 end) 인턴수,
sum(case when dept_code is null then 1 end) 인턴수
from
employee;
결과값 모두 "2"
☞ max(), min()
- 숫자 (가장 큰 수 / 가장 작은 수)
- 문자 (사전등재가 가장 늦은 값 / 사전등재가 가장 빠른 값)
- 날짜 (가장 미래 / 가장 과거)
select
max(salary), min(salary),
max(emp_name), min(emp_name),
max(hire_date), min(hire_date)
from
employee;
LIST
'DataBase > Oracle' 카테고리의 다른 글
DQL) HAVING 구문(rollup, cube, grouping 함수) (0) | 2022.04.18 |
---|---|
DQL) GROUP BY 구문 (0) | 2022.04.18 |
함수/단일행 처리 함수) 기타 함수(nvl, nvl2, decode, case) (0) | 2022.04.15 |
함수/단일행 처리 함수) 형변환 처리 함수(to_char, to_number, to_date, to_yminterval, to_dsinterval) (0) | 2022.04.15 |
함수/단일행 처리 함수) 날짜 처리 함수(add_months, extract, trunc, months_between, next_day, last_day) (0) | 2022.04.15 |