ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SQL Study3 - SELECT
    DB/SQL 2018. 8. 7. 09:40
    반응형
    -- 46. 사원수가 가장 많은 도시에서 근무하는 모든 사원들의 부서별 및
    -- 직무별 평균 연봉을 조회하라.
    SELECT L.CITY
    , D.DEPARTMENT_NAME
    , J.JOB_ID
    , ROUND(AVG(E.SALARY) , 0) AVG_SALARY
    FROM EMPLOYEES E
    , DEPARTMENTS D
    , LOCATIONS L
    , JOBS J
    , (
    SELECT *
    FROM (
    SELECT L.CITY
    , COUNT(1) CNT
    FROM EMPLOYEES E
    , DEPARTMENTS D
    , LOCATIONS L
    WHERE E.DEPARTMENT_ID = D.DEPARTMENT_ID
    AND D.LOCATION_ID = L.LOCATION_ID
    GROUP BY L.CITY
    ORDER BY CNT DESC
    )
    WHERE ROWNUM = 1
    ) L_COUNT
    WHERE E.DEPARTMENT_ID = D.DEPARTMENT_ID
    AND L.LOCATION_ID = D.LOCATION_ID
    AND L.CITY = L_COUNT.CITY
    AND J.JOB_ID = E.JOB_ID
    GROUP BY L.CITY, D.DEPARTMENT_NAME, J.JOB_ID
    ;

    -- 47. 입사일이 가장 오래된 사원을 조회하라.
    SELECT *
    FROM EMPLOYEES
    WHERE HIRE_DATE = (
    SELECT MIN(HIRE_DATE)
    FROM EMPLOYEES
    )
    ;

    -- 48. 입사일이 가장 최근인 사원을 조회하라.
    SELECT *
    FROM EMPLOYEES
    WHERE HIRE_DATE = (
    SELECT MAX(HIRE_DATE)
    FROM EMPLOYEES
    )
    ;


    -- 49. 가장 최근에 입사한 사원과 가장 오래전에
    -- 입사한 사원의 일차를 계산해 조회하라.
    SELECT MAX(HIRE_DATE) - MIN(HIRE_DATE)
    FROM EMPLOYEES
    ;

    -- 50. 가장 최근에 입사한 사원과 가장 오래전에
    -- 입사한 사원의 시간차를 계산해 조회하라.
    SELECT ROUND(MAX(HIRE_DATE) - MIN(HIRE_DATE))*24
    FROM EMPLOYEES
    ;

    -- 현재 날짜
    SELECT SYSDATE
    FROM DUAL
    ;

    -- 하루 기준
    SELECT SYSDATE
    , SYSDATE - 1 -- 하루 전
    , SYSDATE + 1 -- 하루 후
    , ADD_MONTHS(SYSDATE, 1) -- 한달 후
    , ADD_MONTHS(SYSDATE, -1) -- 한달 전
    , ADD_MONTHS(SYSDATE, -12) -- 일년 전
    , ADD_MONTHS(SYSDATE, 12) -- 일년 후
    FROM DUAL
    ;

    -- 시간 기준
    SELECT SYSDATE - (1/24) -- 한 시간 전
    , SYSDATE - (3/24) -- 세 시간 전
    , SYSDATE + (5/24) -- 다섯 시간 후
    , SYSDATE + (10 / 24 / 60) -- 10분 후, 분 / 시간(하루) / 분(시간)
    , SYSDATE + ( 5 / 24 / 60 / 60) -- 5초 후
    FROM DUAL
    ;

    -- 원하는 날짜 구간 조회, 2007/05/10 ~ 2007/08/10
    SELECT *
    FROM EMPLOYEES
    WHERE HIRE_DATE >= TO_DATE('2007/05/10', 'YYYY-MM-DD')
    --AND HIRE_DATE <= TO_DATE('2007/08/10', 'YYYY-MM-DD')
    AND HIRE_DATE <= ADD_MONTHS(TO_DATE('2007/08/10', 'YYYY-MM-DD'), 3)
    ;


    반응형

    'DB > SQL' 카테고리의 다른 글

    Update Query시 두 테이블 간 1:1 대칭 후 값 Set 시키기 - Merge Into  (0) 2019.03.28
    Eclipse - SQL Explorer 실행  (0) 2018.08.26
    SQL Study2 - SELECT  (0) 2018.08.06
    SQL SELECT Study  (0) 2018.08.03
    SQL - JOIN, SUB QUERY, INLINE TABLE, IN VIEW  (0) 2018.08.03

    댓글

Designed by Tistory.