해당하는 항목만 조회 하기 5

by xcrew postgresql [2023.10.30 16:42:48]


안녕하세요.

한달에 한번 실행되는 스케줄에 해당하는 항목들을 가져오려고 합니다.
postgresql이고 도움 부탁드립니다.

order_id = 주문번호, use_term=사용개월 , pay_success_ts=결제일, reg_ts=생성일, start_dy=이용시작일, expiration_dy=이용종료일 입니다.

SELECT order_id, use_term, pay_success_ts, reg_ts, start_dy, expiration_dy 
FROM tb_strg_order01m a
WHERE a.pay_gubun = 'P'
AND a.pay_std = 'success'
AND to_date(a.expiration_dy, 'YYYYMMDD') > to_date(to_char('20231101'::date, 'YYYYMMDD'), 'YYYYMMDD')
AND use_term > '1'

조회 결과는 아래와 같습니다.

order_id use_term pay_success_ts reg_ts start_dy expiration_dy
224 6 2023-05-23 13:16:48.300 2023-05-23 13:16:48.304 20230525 20231124
235 6 2023-06-01 15:31:53.270 2023-06-01 15:31:53.273 20230601 20231201
450 3 2023-09-03 16:10:11.692 2023-09-03 16:10:11.696 20230909 20231208
72 12 2023-02-10 21:22:54.750 2023-02-10 21:22:54.755 20230211 20240210
416 3 2023-08-23 12:21:10.407 2023-08-23 12:21:10.411 20230825 20231124

현재월이 11월이라고 가정 했을때
이용시작일과 이용종료일에 포함된 데이터만 가져오면 되는데
order_id 224와 416은 이미 10월달에 결제가 되었을테니 빼고 가져와야  됩니다.
그래서 제가 원하는 데이터는 아래와 같습니다.

order_id use_term pay_success_ts reg_ts start_dy expiration_dy
235 6 2023-06-01 15:31:53.270 2023-06-01 15:31:53.273 20230601 20231201
450 3 2023-09-03 16:10:11.692 2023-09-03 16:10:11.696 20230909 20231208
72 12 2023-02-10 21:22:54.750 2023-02-10 21:22:54.755 20230211 20240210
           
           

도움 부탁드립니다.

by 우주민 [2023.10.30 16:50:51]

"order_id 224와 416은 이미 10월달에 결제가 되었을테니" 이 정보를 특정 지을 수 있는 컬럼이 혹시 있나요?

아니면 무조건 1달 전에 결제가 되는건가요?


by 마농 [2023.10.30 17:30:42]

조회 대상 판별 기준을 정확하게 알려주셔야 합니다.
"224의 경우 5월 부터 10월까지 6개월간의 정산은 이미 된 상태고 끝났으니" 라고 하셨는데?
어떤 항목의 어떤 값을 기준으로 판별하신 것인지 값을 구체적으로 적어주세요.
예를 들면 (5월 부터 10월까지)가 6개월인 듯 하지만
일자까지 고려하면 (5월25일 ~ 11월24일)이 6개월입니다.


by xcrew [2023.10.30 16:57:37]

특정 지을 수 있는 컬럼은 없습니다. use_term 6개월 짜리를 한달 한달 나눌려고 한다고 보시면 됩니다. ㅠㅠ
예를들어서 224의 경우 5월 부터 10월까지 6개월간의 정산은 이미 된 상태고 끝났으니 11월에는 나오면 안되는 겁니다.


 


by 우주민 [2023.10.30 17:29:42]

질문해 주신 내용을 정확하게 이해하지 못해 질문을 또 드리게 되네요....

답변해주신 224와 같이 235의 경우에도 이미 6월부터 12월까지 결제가 완료 되었다고 봐야하는거 아닐까요?


by 마농 [2023.10.30 16:55:39]

1. 조회조건만 바꾸면 되는 것 아닌가요?
- 조회조건 : '20231101' -> '20231201'

2. 그리고 불필요한 함수 사용도 제거하면 좋을 듯 합니다.
- 조건절에서 사용된 함수들 제거 : to_char, to_date, ::date 등 전부 불필요
- AND a.expiration_dy >= '20231201'

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입