SQL - 복습 3

강용구·2021년 4월 29일

복습할 양이 꽤 많다.
오늘은 세번째 복습이다.

SELECT ename as 이름
     , EXTRACT(YEAR FROM hiredate) as 연도
     , EXTRACT(MONTH FROM hiredate) as 달
     , EXTRACT(DAY FROM hiredate) as 요일
     , TO_CHAR(sal, '999,999') as 월급
  FROM emp

EXTRACT : 날짜 컬럼에서 연도/월/일/시간/분/초를 추출할 수 있는 함수
TO_CHAR : 숫자 컬럼을 추출할 때 숫자서식을 지정해주는 함수

SELECT ename
     , hiredate
  FROM emp
  WHERE hiredate = TO_DATE('81/11/17', 'RR/MM/DD')

TO_DATE : 입력한 날짜 데이터의 형식을 지정할 수 있는 함수

SELECT ename
     , comm
     , NVL(comm, 0)
  FROM emp

NVL : NULL 값을 대체할 값을 지정해주는 함수

SELECT ename
     , sal
     , comm
     , NVL2(comm, sal+comm, sal)
  FROM emp
  WHERE job IN ('SALESMAN', 'ANALYST')

comm에는 null인 값들이 포함되어 있다
NVL2 : 컬럼의 값이 null이 아닐 때와 null일 때 어떤 값을 출력할지 각각 지정하는 함수

  • 이 경우에는 comm이 null이 아닌 경우 sal+comm 값을, null인 경우 sal 값을 추출하도록 하였다
SELECT ename
     , deptno
     , DECODE(deptno, 10, 300, 20, 400, 0) as 보너스
  FROM emp

DECODE : 엑셀의 IF와 유사. 컬럼 값에 따라 어떤 값을 추출할지 지정하는 함수

SELECT ename 이름
     , job 직업
     , sal 월급
     , CASE WHEN sal >= 3000 THEN 500
            WHEN sal >= 2000 THEN 300
            WHEN sal >= 1000 THEN 200
            ELSE 0 END AS 보너스
  FROM emp
  WHERE job IN ('SALESMAN', 'ANALYST') 


CASE : DECODE와 같이 엑셀의 IF 역할을 수행한다. 다만, DECODE는 등호(=) 비교만 가능하지만, CASE는 등호와 부등호 비교 모두 가능하다.

SELECT MAX(sal)
     , MIN(sal)
     , ROUND(AVG(sal),0)
  FROM emp


MAX, MIN, AVG : 지정한 컬럼의 최대/최소/평균 값을 구하는 함수

SELECT job
     , MAX(sal)
  FROM emp
  GROUP BY job


GROUP BY : 데이터를 Grouping 하는 함수. FROM, WHERE 쿼리 진행후에 실행된다.

profile
Lifetime Value Creator

0개의 댓글