금액 산출 쿼리 도와주세요 0 4 815

by 초봉 [SQL Query] [2019.03.07 16:43:00]


금액 산출 쿼리를 짜던중에 안되서 ㅜㅜ 끙끙 앓고 있습니다.

홍길동 연봉이 45,810,000 입니다.

이 사람이 월 연봉은 / 12 개월수 하여 3817500 입니다.

하지만 홍길동은 프로젝트를 2019년 1월 1일 부터 2019년 2월 15일까지만 참여하여 

해당 프로젝트에서 1개월치 와 15일치를 합산한 금액이 산출되어야 합니다.

3817500 + 182605 = 5700105 금액이 도출되어야 합니다.

만약 2월 28일까지 해당 개월을 풀로 참여할경우 3817500* 2 = 76365000 금액이 도출되어야 합니다.

도와주세요 ㅜㅜ

by 우리집아찌 [2019.03.07 17:51:06]

2019년 1월 2일 부터 2019년 2월 1일까지 일하는 경우는 어떻게 계산하나요?


by 초봉 [2019.03.12 17:54:14]

일자 계산입니다. 1월에 만근을 한게 아니니 1월에 일자계산 2월에도 하루치 일자계산


by 마농 [2019.03.07 18:17:25]
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
        )
;

 


by 초봉 [2019.03.12 15:55:19]

항상 도움을 받네요 감사합니다 마농님

 

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