반응형
특정 월의 평일만 구하는 쿼리문을 알아보겠습니다.
[ 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, 쿼리에서의 반복문
여기서 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') 로 바꾸면 됩니다.
반응형
'Data Engineering > SQL' 카테고리의 다른 글
[Oracle] COALESCE: Null이 아닌 가장 왼쪽 값을 찾는 함수 (0) | 2023.04.27 |
---|---|
[ORACLE] 기존 튜플을 변형해서 테이블에 삽입하는 방법 (여러 건의 튜플 삽입) (0) | 2023.04.25 |
[Oracle] CONNECT BY LEVEL: 계층적인 SQL, 쿼리에서의 반복문 (0) | 2023.03.27 |
[Oracle/Tibero] 여러 개의 테이블을 조인해서 업데이트 (2개 이상) (0) | 2023.03.15 |
[SQL] 문자열 변환함수 To_Char()와 형식(Format) - 오라클(Oracle) (0) | 2022.03.09 |
댓글