본문 바로가기

DataBase/Oracle

Oracle(2) - SQL함수

1. DUAL 테이블

SQL함수에는 한줄로 데이터를 꺼낼수 있는 DUAL테이블이 존재한다.
ex) select 60*24 from dual;

2. SUM함수

SUM함수를 사용해서 칼럼에해당하는 값을 더한 총합을 출력할 수 있다.
그룹함수의 값은 여러개의 행에 대해서 1개의 행만을 출력해준다.
ex) 부서번호가 30인 사원의 총 급여
select deptno, sum(sal) from emp group by deptno having deptno = 30;

3. 단일행함수

- 행마다 함수가 적용되어 결과를 반환
- 문자, 숫자, 날짜, 변환, 일반함수
- 문자함수(LOWER, UPPER, SUBSTR, LENGTH, INSTR, TRIM등)
- 숫자함수

  • ABS - 절대값 반환
  • ROUND - 원하는 자리에서 반올림
  • TRUNC - 원하는 자리에서 버림
  • FLOOR - 소수점 다버림
  • MOD(숫자, 나눌값) - 나머지를 반환

- 변환함수

  • TO_CHAR - 날짜형 혹은 숫자형을 문자형으로 변환
  • TO_DATE - 문자형을 날짜형으로 변환
  • TO_NUMBER - 문자형을 숫자형으로 변환

- 일반함수

  • NVL - 입력받은 값이 NULL이면 다음 값으로 변환
  • DECODE - 첫 번째 인자로 받은 값을 조건에 맞춰 변경

4. 그룹함수

- 하나 이상희 행을 그룹으로 묶어 연산하여 총합, 평균등을 반환
- SUM, AVG, COUNT, MAX, MIN, STDDEV 등
- 그룹의 결과를 제한할 때는 HAVING절을 사용한다.

쿼리 예시)

select * from employees;
select first_name from employees where instr(first_name, 'e', 2) = 2; 
select lpad('DataBase', 20, '$') from dual;
select trim('a' from 'aaaaaaDataBase programmingaaa') from dual;
select round(3.553, 2) from dual;
select abs(-32.22) from dual;
select floor(3.5525) from dual;
select trunc(3.5511, 2) from dual;
select first_name, employee_id from employees where mod(employee_id, 2) = 0;
select months_between(sysdate, hire_date) from employees where department_id = 90;
select sysdate from dual;
select to_char(sysdate, 'yyyy-mm-dd-day, HH24:MI:SS') from dual;
select to_char(salary, '999,999') from employees;
select to_date(19931029, 'yyyy-mm-dd') from dual;
select to_number('10000', '999,999') + to_number('200000', '999,999') from dual;
select nvl(manager_id, 0) from employees;
select count(*), count(department_id) from employees;
select distinct job_id from employees;
select count(distinct job_id) from employees;
select department_id, avg(salary) from employees group by department_id;
select department_id, count(*), count(commission_pct) from employees group by department_id;
select department_id, avg(salary) from employees group by department_id having avg(salary) >= 5000;

'DataBase > Oracle' 카테고리의 다른 글

Oracle(6) - JOIN  (0) 2019.04.17
Oracle(5) - 무결성제약조건  (0) 2019.04.17
Oracle(4) - DML, 트랜잭션  (0) 2019.04.16
Oracle(3) - DDL  (0) 2019.04.16
Oracle(1) - SQL기본  (0) 2019.04.12