반응형
SMALL
함수의 종류
단일 행 함수 : 문자(→숫자), 숫자(→숫자), 날짜(MONTH_BETWEEN 제외/→날짜),
변환(→타입변환), 일반(NVL,DECODE,CASE,WHEN,순위함수 등)
그룹 함수 : 함수, GROUP BY, HAVING BY
단일 행 함수 - 문자 타입 함수
SELECT SUBSTR(first_name, 1, 2)
FROM employees;
SUBSTR
단일 행 함수 - 숫자 타입 함수
SELECT TRUNC(ROUND(salary / 3, 0))
FROM employees;
TRUNC(ROUND())
단일 행 함수 - 날짜 타입 함수
SELECT SYSDATE
FROM DUAL;
SYSDATE : 오늘 날짜
DUAL : 더미 테이블
SELECT SYSDATE, hire_date,
MONTHS_BEETWEEN(SYSDATE, hire_date) 적용결과
FROM employees
WHERE employee_id BETWEEN 100 AND 106;
MONTHS_BEETWEEN : 개월 수 차이
SELECT hire_data,
ADD_MONTHS(hire_data, 3) 더하기_적용결과,
ADD_MONTHS(hire_data, -3) 빼기_적용결과
FROM employees
WHERE employee_id BETWEEN 100 AND 106;
ADD_MONTHS : 개월수 더하기
단일 행 함수 - 변환 함수
SELECT SYSDATE,
TO_CHAR(SYSDATE, 'YY'),
TO_CHAR(SYSDATE, 'YYYY'),
TO_CHAR(SYSDATE, 'MM'),
TO_CHAR(SYSDATE, 'MON'),
TO_CHAR(SYSDATE, 'YYYYMMDD') 응용적용1,
TO_CHAR(TO_DATE('20171008'),'YYYYMMDD' 응용적용2
FROM DUAL;
SELECT TO_NUMBER('123')
FROM DUAL;
SELECT TO_DATE('20171007'), 'YYMMDD')
FROM DUAL;
TO_CHAR(VARCHAR2) : 문자로 변환
TO_NUMBER : 숫자로 변환
TO_DATE : 날짜로 변환
단일 행 함수 - 일반 함수
SELECT employee_id,
salary,
RANK() OVER(ORDER BY salary DESC) RANK_급여
DENSE_RANK() OVER(ORDER BY salary DESC) DENSE_RANK_급여
ROW_NUMBER() OVER(ORDER BY salary DESC) ROW_NUMBER_급여
FROM employees
WHERE employee_id BETWEEN 100 AND 106;
RANK : 순위 (동순위는 동일한 순서)
DEN_RANK : 순위 (동순위는 하나건수)
ROW_NUMBER : 순위 (동순위도 고유값)
SELECT salary * commission_pct
FROM employees
WHERE employee_id BETWEEN 100 AND 106
ORDER BY commission_pct;
SELECT salary * NVL(commission_pct, 1)
FROM employees
WHERE employee_id BETWEEN 100 and 106
ORDER BY commission_pct;
NVL : null값을 ‘ ‘ 값으로 치환
SELECT first_name,
last_name,
department_id,
salary 원래급여,
DECODE(department_id, 60, salary*1.1, salary) 조정된급여,
DECODE(department_id, 60, '10%인상', '미인상') 인상여부
FROM employees
WHERE employee_id BETWEEN 100 AND 106;
DECODE : 하나의 조건값에 해당 할 경우 치환값 또는 기본값
SELECT employee_id, first_name, last_name, salary,
CASE
WHEN salary >= 9000 THEN '상위급여'
WHEN salary BETWEEN 6000 AND 8999 THEN '중위급여'
ELSE '하위급여'
END AS 급여등급
FROM employees
WHERE job_id = 'IT_PROG';
CASE : 복잡한 조건값을 출력
그룹 함수
SELECT COUNT(*), AVG(salary)
FROM employees;
COUNT, AVG
SELECT SUM(salary) AS 총월급여,
SUM(salary)*0.1 AS 인상분,
SUM(salary)*1.1 AS 변경후_총월급여
FROM employees;
SELECT SUM(salary) AS 총월급여,
TRUNC(SUM(salary)*0.1,0) AS 추가_인상분,
ROUND(SUM(salary)*1.1,0) AS 인상후_총월급여
FROM employees;
SUM
그룹 함수 - GROUP BY 절 HAVING 절
SELECT job_id 직무, SUM(salary) 직무별_총급여, AVG(salary) 직무별_평균급여
FROM employees
WHERE employee_id >= 10
GROUP BY job_id
ORDER BY 직무별_총급여 DESC, 직무별_평균급여;
GROUP BY
총 판매 금액과 총 판매 수량 비교
SELECT item_id,
SUM(sales) AS SALE,
SUM(QUANTITY) AS QTY
--, COUNT(order_no) AS ORDER_CNT
FROM order_info
GROUP BY item_id
ORDER BY SUM(sales) DESC
비교분석문 : GROUP BY 절, — 주석으로 비교
(출처1: 핵심만 쉽게, 모두의 SQL 데이터 분석)
반응형
LIST
'DB > SQL 응용' 카테고리의 다른 글
DDL(Data Definition Language) 테이블 세팅 (*캠페인 분석 준비) (0) | 2022.07.04 |
---|---|
서브 쿼리, 연산자, 인라인 뷰 (*요일/인구 분석) (0) | 2022.07.03 |
'SQL' ERD, JOIN, 집합 연산자 (*추이 분석) (0) | 2022.07.03 |
'SQL' SELECT 문, WHERE 조건절 (*기초 분석) (0) | 2022.07.03 |
'SQL' 기초설정 및 디벨로퍼 익히기 (*Oracle 11g) (0) | 2022.06.29 |