금액 산출 쿼리를 짜던중에 안되서 ㅜㅜ 끙끙 앓고 있습니다.
홍길동 연봉이 45,810,000 입니다.
이 사람이 월 연봉은 / 12 개월수 하여 3817500 입니다.
하지만 홍길동은 프로젝트를 2019년 1월 1일 부터 2019년 2월 15일까지만 참여하여
해당 프로젝트에서 1개월치 와 15일치를 합산한 금액이 산출되어야 합니다.
3817500 + 182605 = 5700105 금액이 도출되어야 합니다.
만약 2월 28일까지 해당 개월을 풀로 참여할경우 3817500* 2 = 76365000 금액이 도출되어야 합니다.
도와주세요 ㅜㅜ
2019년 1월 2일 부터 2019년 2월 1일까지 일하는 경우는 어떻게 계산하나요?
일자 계산입니다. 1월에 만근을 한게 아니니 1월에 일자계산 2월에도 하루치 일자계산
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
)
;
항상 도움을 받네요 감사합니다 마농님