금액 산출 쿼리를 짜던중에 안되서 ㅜㅜ 끙끙 앓고 있습니다.
홍길동 연봉이 45,810,000 입니다.
이 사람이 월 연봉은 / 12 개월수 하여 3817500 입니다.
하지만 홍길동은 프로젝트를 2019년 1월 1일 부터 2019년 2월 15일까지만 참여하여
해당 프로젝트에서 1개월치 와 15일치를 합산한 금액이 산출되어야 합니다.
3817500 + 182605 = 5700105 금액이 도출되어야 합니다.
만약 2월 28일까지 해당 개월을 풀로 참여할경우 3817500* 2 = 76365000 금액이 도출되어야 합니다.
도와주세요 ㅜㅜ
WITH t_user AS ( SELECT 1 eno, '홍길동' enm, 45810000 y_sal FROM dual ) , t_work AS ( SELECT 1 eno, '20190101' sdt, '20190215' edt FROM dual ) SELECT eno , enm , y_sal , m_sal , TO_CHAR(ym, 'yyyymm') ym , TO_CHAR(LAST_DAY(ym), 'dd') tot_days , e - s + 1 work_days , ROUND(m_sal * (e - s + 1) / TO_CHAR(LAST_DAY(ym), 'dd'), -1) sal FROM (SELECT a.eno , a.enm , a.y_sal , a.y_sal / 12 AS m_sal , ADD_MONTHS(TRUNC(b.s, 'mm'), lv-1) ym , GREATEST(b.s, ADD_MONTHS(TRUNC(b.s, 'mm'), lv-1)) s , LEAST(b.e, ADD_MONTHS(TRUNC(b.s, 'mm'), lv)-1) e FROM t_user a , (SELECT eno , TO_DATE(sdt, 'yyyymmdd') s , TO_DATE(edt, 'yyyymmdd') e FROM t_work ) b , (SELECT LEVEL lv FROM dual CONNECT BY LEVEL <= 99) c WHERE a.eno = b.eno AND c.lv <= MONTHS_BETWEEN(TRUNC(e, 'mm'), TRUNC(s, 'mm')) + 1 ) ;