DB/PostgreSQL

    [Postgresql] 영업일(business day)구하기

    [Postgresql] 영업일(business day)구하기

    1. 입력한 기간 및 날짜에서 가장 가까운 이전 영업일 찾기 SELECT MAX(S.DAYS) AS WORK_DAY FROM ( SELECT S.DAYS::DATE FROM GENERATE_SERIES('20230101'::DATE, '20501231', '1 DAY') S(DAYS) WHERE EXTRACT(DOW FROM S.DAYS) BETWEEN 1 AND 5 EXCEPT SELECT HOLIDAY_DATE::DATE FROM TB_HOLIDAY ) S WHERE S.DAYS < '20231001' 2. 입력한 기간 중 영업일 리스트 조회 WITH DAYS AS ( SELECT TO_CHAR(DD, 'YYYYMMDD') DD, EXTRACT(ISODOW FROM DD) DW FROM GENERAT..

    [PostgreSQL] 데이터 기간 조회(당일, 주간, 월간, 연간)

    [PostgreSQL] 데이터 기간 조회(당일, 주간, 월간, 연간)

    당일 조회 ${COLUMN} = TO_CHAR(CURRENT_DATE,'YYYYMMDD') 주간 조회 ${COLUMN} BETWEEN TO_CHAR(date_trunc('WEEK', CURRENT_DATE),'YYYYMMDD') and TO_CHAR((date_trunc('WEEK', CURRENT_DATE) + INTERVAL '6 day'),'YYYYMMDD') 월간 조회 ${COLUMN} BETWEEN TO_CHAR(date_trunc('MONTH', CURRENT_DATE),'YYYYMMDD') and TO_CHAR((date_trunc('MONTH', CURRENT_DATE) + INTERVAL '1 MONTH - 1 day'),'YYYYMMDD') 연간 조회 ${COLUMN} BETWEEN T..

    [PostgreSQL] Update Join

    [PostgreSQL] Update Join

    서로 연관이 있는 두 개의 테이블에 데이터가 있는 상태에서 컬럼을 이동해야하는 상황이 생겼다. A테이블에서 B테이블로 컬럼을 이동해야하는데 데이터까지 넣어줘야 하므로, Join을 사용하여 update하는 방법을 찾아보았다. # 기본 Update문 UPDATE TABLE_NAME SET COLUMN = 'A' WHERE ID = '1' # Update Join 문 UPDATE TABLE1 A SET COLUMN = 'A' FROM TABLE2 B WHERE B.ID = A.ID 이 때, join 방식은 Inner Join이다. UPDATE TABLE1 A SET COLUMN = 'A' FROM TABLE2 B, TABLE3 C WHERE A.ID = B.ID and B.C_ID = C.ID and C.ST..

    [PostgreSQL] DELETE JOIN

    [PostgreSQL] DELETE JOIN

    Master Table의 오래된 데이터를 삭제하려고보니, 엮여있는 테이블의 참조키(foreign key) 제약 조건 때문에 DELETE문에 JOIN을 사용하려고 한다. DELETE FROM TB_SALE_CUST WHERE STATUS_CD = '07' AND SALE_DT

    [PostgreSQL] 날짜/시간 관련 함수 1

    [PostgreSQL] 날짜/시간 관련 함수 1

    # 현재 날짜 조회하기 SELECT NOW(), CURRENT_DATE, CURRENT_TIME ,CURRENT_TIMESTAMP # TIMESTAMP에서 추출하기(EXTRACT, date_part) ## EXTRACT SELECT NOW() ,EXTRACT(YEAR FROM NOW())AS YEAR ,EXTRACT(MONTH FROM NOW())AS MONTH ,EXTRACT(DAY FROM NOW())AS DAY ,EXTRACT(HOUR FROM NOW())AS HOUR ,EXTRACT(MINUTE FROM NOW())AS MINUTE ,EXTRACT(SECOND FROM NOW())AS SECOND ## date_part date_part('field', source) SELECT date_part..

    [postgreSql] GROUPING SETS/ROLLUP

    [postgreSql] GROUPING SETS/ROLLUP

    Oracle 교육, SQLD책에서만 보던 ROLLUP을 실제로 써봤다. ROLLUP, CUBE 등의 통계함수가 있다는 것 정도만 알았지 실제로 써본건 처음이다. SQLD시험을 보기 전에 써봤다면 아마 한번에 합격했겠지? ROLLUP ROLLUP은 GROUP BY로 묶어준 뒤 소계 행을 나타내주는 통계함수다. 문법은 어렵지않다. 그냥 딱 보면 어떻게 쓰는지 알 정도! 사실 딱 보면은 아니고 몇 번만 해보면 안다. 무엇보다 실습이 최고👍(⸝⸝⸝°⁻̫° ⸝⸝⸝) SELECT COUNT(1) FROM [테이블명] WHERE [조건] GROUP BY ROLLUP ( ([COLUMN1]) ,([COLUMN2],[COLUMN3]) ) 아래는 실제로 적용한 쿼리문들😉(왕뿌듯) (SELECT 'PAY' as "TYPE"..