본문 바로가기
Data Engineering/SQL

[Oracle] 특정 월 평일/주말만 조회하는 쿼리문 작성하기 (계층적 쿼리)

by jangThang 2023. 3. 28.
반응형

 특정 월의 평일만 구하는 쿼리문을 알아보겠습니다.

 

[ Contents ]

     

     

    1.  해당 월의 평일만 조회하는 쿼리

    SELECT TO_CHAR(DATES, 'YYYYMMDD') AS 평일
    FROM (
      SELECT TO_DATE('20230401', 'YYYYMMDD') + LEVEL - 1 AS DATES
      FROM DUAL
      CONNECT BY LEVEL <= TO_NUMBER(TO_CHAR(LAST_DAY(TO_DATE('202304', 'YYYYMM')), 'DD'))
    )
    WHERE TO_CHAR(DATES, 'D') BETWEEN 2 AND 6;

     인라인 뷰의 Select 문에 월 시작일을 넣고, Connect By문에 해당 달을 넣어서 월이 끝나는 날짜를 구합니다.

     즉, 1일부터 말일까지 인라인 뷰에서 생성하고 Where절에서 주말을 제외하는 방식으로 구합니다.

     

    2023.03.27 - [Data Engineering/SQL] - [Oracle] CONNECT BY LEVEL: 계층적인 SQL, 쿼리에서의 반복문

     

    [Oracle] CONNECT BY LEVEL: 계층적인 SQL, 쿼리에서의 반복문

    START WITH, CONNECT BY 문이 쓰이는 계층적 쿼리가 있습니다. 이는 쉽게 이해하면 SQL에서의 반복문이라고 생각하시면 됩니다. 이에 대해 알아보겠습니다. [ Contents ] 1. CONNECT BY LEVEL for i in range(1, 10): pri

    star7sss.tistory.com

     여기서 Connect by문은 반복문처럼 사용되었고, 자세한 설명은 위 링크에서 보실 수 있습니다.

     

     

    2.  해당 월의 주말만 조회하는 쿼리

    SELECT TO_CHAR(DATES, 'YYYYMMDD') AS 주말
    FROM (
      SELECT TO_DATE('20230401', 'YYYYMMDD') + LEVEL - 1 AS DATES
      FROM DUAL
      CONNECT BY LEVEL <= TO_NUMBER(TO_CHAR(LAST_DAY(TO_DATE('202304', 'YYYYMM')), 'DD'))
    )
    WHERE TO_CHAR(DATES, 'D') IN ('1', '7');

     반대로 주말만 출력하는 쿼리도 쉽게 만들 수 있겠죠.

     WHERE절만 TO_CHAR(DATES, 'D') IN ('1', '7') 로 바꾸면 됩니다.

     

     

     

    star가 되고나서 Tistory

    반응형

    댓글