엑셀 함수 구현 문의 0 4 653

by 햇살가득 [MySQL] [2019.08.20 20:10:42]


안녕하세요. 

엑셀에서 사용하는 PV 함수를 사용하여 현재가치 구하는 장표를 프로그램 화 시켜야 합니다.

MYSQL에서 쿼리를 통해 구현하고 싶은데 고민이 명쾌하게 해결이 되지 않아 막막한 상황입니다.

고수님들 많은 도움 부탁드립니다.!!
 

예제)

'현재 가치 금액' 엑셀 수식 : ROUND(PV(이자율/12,월수,-금액),0) 

이자율 : 5.3 %

월수 금액 현재 가치 금액
3   ₩208,159
2 ₩70,000 ₩139,078
1 ₩70,000 ₩70,000
0 ₩70,000 ₩0
by 마농 [2019.08.20 22:40:41]

MySQL 버전이 어떻게 되나요?
분석함수 사용 가능 버전인지?
http://gurubee.net/article/81032


by 햇살가득 [2019.08.21 14:38:51]

네. 정확히는 Maria DB 10.1 버전입니다. 


by 마농 [2019.08.21 15:12:57]

분석함수 사용 가능한지 확인하세요.
사용 불가능한 경우 쿼리가 훨씬 더 복잡해 집니다.
위 링크 참조해서 한번 구현해 보시구요.


by 마농 [2019.08.21 18:22:38]

분석함수 기능이 MariaDB 10.2 부터 가능하네요. 10.1 은 안되는 듯.
copy_t 를 이용해 행을 복제하는 방식으로 구현해 봤습니다.

WITH data_t AS
(
SELECT 70000 amt  -- 금액
     , 5.3   rat  -- 이율
     , 4     cnt  -- 월수
)
, copy_t AS
(
SELECT 1 lv
UNION ALL SELECT 2
UNION ALL SELECT 3
UNION ALL SELECT 4
UNION ALL SELECT 5
UNION ALL SELECT 6
UNION ALL SELECT 7
UNION ALL SELECT 8
UNION ALL SELECT 9
UNION ALL SELECT 10
UNION ALL SELECT 11
UNION ALL SELECT 12
)
SELECT a.amt
     , a.rat
     , a.cnt
     , b.lv
     , ROUND(SUM(amt / POWER(1 + rat/12/100, c.lv))) pv
  FROM data_t a
 INNER JOIN copy_t b
    ON b.lv <= a.cnt
 INNER JOIN copy_t c
    ON c.lv <= b.lv
 GROUP BY a.amt, a.rat, a.cnt, b.lv
;

 

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