결제통계.sql 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406
  1. /*G016_00 결제대기
  2. G016_10 무통장입금전
  3. G016_30 결제완료
  4. G016_97 결제성공후DB실패
  5. G016_98 결제전취소
  6. G016_99 결제취소
  7. G014 G014_10 실시간계좌이체
  8. G014 G014_20 무통장입금
  9. G014 G014_30 신용카드
  10. G014 G014_40 포인트
  11. G014 G014_50 쿠폰
  12. G014 G014_60 휴대전화
  13. G014 G014_70 상품권
  14. G014 G014_80 네이버포인트
  15. G014 G014_81 카카오포인트
  16. G014 G014_82 PAYCO포인트
  17. G014 G014_83 카카오머니
  18. G014 G014_90 외부몰입금
  19. G015 INICIS 이니시스
  20. G015 ISTYLE 아이스타일
  21. G015 KAKAO 카카오페이
  22. G015 KCP 케이씨피
  23. G015 NAVER 네이버페이
  24. G015 NAVER_ORDER 네이버페이주문형
  25. G015 NICE 나이스
  26. G015 PAYCO 페이코*/
  27. -- 결제수단통계 수집
  28. INSERT INTO TB_STAT_PAY
  29. SELECT
  30. DATE_FORMAT(PAY_DT, '%Y-%m-%d') AS TERM
  31. , PAY_MEANS -- 결제수단
  32. , PG_GB -- PG구분
  33. , COM_CARD_CD -- 카드코드
  34. , SUM(PAY_AMT) AS PAY_AMT -- 결제금액
  35. , NOW()
  36. FROM TB_PAYMENT A USE INDEX (IX_PAYMENT_01)
  37. WHERE PAY_DT >= DATE_FORMAT('20180101', '%Y%m%d')
  38. AND PAY_DT <= DATE_FORMAT(CONCAT('20210831', '235959'), '%Y%m%d%H%i%s')
  39. AND PAY_STAT IN ('G016_30', 'G016_99')
  40. AND PAY_MEANS IN ('G014_10','G014_20','G014_30','G014_60','G014_50')
  41. GROUP BY TERM, PAY_MEANS, PG_GB, COM_CARD_CD
  42. ;
  43. -- 결제통계 결제수단별통계 화변
  44. WITH TAB AS (
  45. SELECT
  46. DATE_FORMAT(DAY, '%Y-%m-%d') AS TERM
  47. , PAY_MEANS -- 결제수단
  48. , PAY_AMT -- 결제금액
  49. , PG_GB -- PG구분
  50. FROM TB_STAT_PAY A
  51. WHERE DAY >= DATE_FORMAT('20200701', '%Y%m%d')
  52. AND DAY <= DATE_FORMAT(CONCAT('20210731', '235959'), '%Y%m%d%H%i%s')
  53. -- AND COM_CARD_CD IN () -- 카드사
  54. -- 간편결제체크시
  55. -- AND PG_GB IN('KAKAO','NAVER','PAYCO')
  56. )
  57. SELECT
  58. TERM
  59. , SUM(CD_AMT) AS CD_ATM -- 카드
  60. , SUM(AC_AMT) AS AC_AMT -- 실시간계좌이체
  61. , SUM(VA_AMT) AS VA_AMT -- 무통장
  62. , SUM(HP_AMT) AS HP_AMT -- 휴대폰
  63. , SUM(CP_AMT) AS CP_AMT -- PG쿠폰
  64. , SUM(NPAY_AMT) AS NPAY_AMT -- 네이버페이
  65. , SUM(PAYCO_AMT) AS PAYCO_AMT -- 페이코
  66. , SUM(KAKAO_AMT) AS KAKAO_AMT -- 카카오
  67. FROM (
  68. SELECT
  69. TERM
  70. , CASE WHEN PAY_MEANS = 'G014_30' THEN PAY_AMT ELSE 0 END AS CD_AMT
  71. , CASE WHEN PAY_MEANS = 'G014_10' THEN PAY_AMT ELSE 0 END AS AC_AMT
  72. , CASE WHEN PAY_MEANS = 'G014_20' THEN PAY_AMT ELSE 0 END AS VA_AMT
  73. , CASE WHEN PAY_MEANS = 'G014_60' THEN PAY_AMT ELSE 0 END AS HP_AMT
  74. , CASE WHEN PAY_MEANS = 'G014_50' THEN PAY_AMT ELSE 0 END AS CP_AMT
  75. , CASE WHEN PAY_MEANS = 'NAVER' THEN PAY_AMT ELSE 0 END AS NPAY_AMT
  76. , CASE WHEN PAY_MEANS = 'PAYCO' THEN PAY_AMT ELSE 0 END AS PAYCO_AMT
  77. , CASE WHEN PAY_MEANS = 'KAKAO' THEN PAY_AMT ELSE 0 END AS KAKAO_AMT
  78. FROM (
  79. SELECT
  80. TERM
  81. , PAY_MEANS
  82. , SUM(PAY_AMT) AS PAY_AMT
  83. FROM TAB
  84. WHERE PAY_MEANS = 'G014_30'
  85. GROUP BY TERM
  86. UNION ALL
  87. SELECT
  88. TERM
  89. , PAY_MEANS
  90. , SUM(PAY_AMT) AS PAY_AMT
  91. FROM TAB
  92. WHERE PAY_MEANS = 'G014_10'
  93. GROUP BY TERM
  94. UNION ALL
  95. SELECT
  96. TERM
  97. , PAY_MEANS
  98. , SUM(PAY_AMT) AS PAY_AMT
  99. FROM TAB
  100. WHERE PAY_MEANS = 'G014_20'
  101. GROUP BY TERM
  102. UNION ALL
  103. SELECT
  104. TERM
  105. , PAY_MEANS
  106. , SUM(PAY_AMT) AS PAY_AMT
  107. FROM TAB
  108. WHERE PAY_MEANS = 'G014_60'
  109. GROUP BY TERM
  110. UNION ALL
  111. SELECT
  112. TERM
  113. , PAY_MEANS
  114. , SUM(PAY_AMT) AS PAY_AMT
  115. FROM TAB
  116. WHERE PAY_MEANS = 'G014_50'
  117. GROUP BY TERM
  118. UNION ALL
  119. SELECT
  120. TERM
  121. , PG_GB AS PAY_MEANS
  122. , SUM(PAY_AMT) AS PAY_AMT
  123. FROM TAB
  124. WHERE PG_GB = 'NAVER'
  125. GROUP BY TERM
  126. UNION ALL
  127. SELECT
  128. TERM
  129. , PG_GB AS PAY_MEANS
  130. , SUM(PAY_AMT) AS PAY_AMT
  131. FROM TAB
  132. WHERE PG_GB = 'PAYCO'
  133. GROUP BY TERM
  134. UNION ALL
  135. SELECT
  136. TERM
  137. , PG_GB AS PAY_MEANS
  138. , SUM(PAY_AMT) AS PAY_AMT
  139. FROM TAB
  140. WHERE PG_GB = 'KAKAO'
  141. GROUP BY TERM
  142. ) Z
  143. ) Z
  144. GROUP BY TERM
  145. ORDER BY TERM
  146. ;
  147. -- 실시간
  148. /*
  149. WITH TAB AS (
  150. SELECT
  151. DATE_FORMAT(PAY_DT, '%Y-%m-%d') AS TERM
  152. , PAY_MEANS -- 결제수단
  153. , PAY_AMT -- 결제금액
  154. , PG_GB -- PG구분
  155. FROM TB_PAYMENT A USE INDEX (IX_PAYMENT_01)
  156. WHERE PAY_DT >= DATE_FORMAT('20200701', '%Y%m%d')
  157. AND PAY_DT <= DATE_FORMAT(CONCAT('20210731', '235959'), '%Y%m%d%H%i%s')
  158. AND PAY_STAT IN ('G016_30', 'G016_99')
  159. -- AND PG_GB IS NOT NULL
  160. AND PAY_MEANS IN ('G014_10','G014_20','G014_30','G014_60','G014_50')
  161. -- AND COM_CARD_CD IN () -- 카드사
  162. -- 간편결제체크시
  163. -- AND PG_GB IN('KAKAO','NAVER','PAYCO')
  164. )
  165. SELECT
  166. TERM
  167. , SUM(CD_AMT) AS CD_ATM
  168. , SUM(AC_AMT) AS AC_AMT
  169. , SUM(VA_AMT) AS VA_AMT
  170. , SUM(HP_AMT) AS HP_AMT
  171. , SUM(CP_AMT) AS CP_AMT
  172. FROM (
  173. SELECT
  174. TERM
  175. , CASE WHEN PAY_MEANS = 'G014_30' THEN PAY_AMT ELSE 0 END AS CD_AMT
  176. , CASE WHEN PAY_MEANS = 'G014_10' THEN PAY_AMT ELSE 0 END AS AC_AMT
  177. , CASE WHEN PAY_MEANS = 'G014_20' THEN PAY_AMT ELSE 0 END AS VA_AMT
  178. , CASE WHEN PAY_MEANS = 'G014_60' THEN PAY_AMT ELSE 0 END AS HP_AMT
  179. , CASE WHEN PAY_MEANS = 'G014_50' THEN PAY_AMT ELSE 0 END AS CP_AMT
  180. FROM (
  181. SELECT
  182. TERM
  183. , PAY_MEANS
  184. , SUM(PAY_AMT) AS PAY_AMT
  185. FROM TAB
  186. WHERE PAY_MEANS = 'G014_30'
  187. GROUP BY TERM
  188. UNION ALL
  189. SELECT
  190. TERM
  191. , PAY_MEANS
  192. , SUM(PAY_AMT) AS PAY_AMT
  193. FROM TAB
  194. WHERE PAY_MEANS = 'G014_10'
  195. GROUP BY TERM
  196. UNION ALL
  197. SELECT
  198. TERM
  199. , PAY_MEANS
  200. , SUM(PAY_AMT) AS PAY_AMT
  201. FROM TAB
  202. WHERE PAY_MEANS = 'G014_20'
  203. GROUP BY TERM
  204. UNION ALL
  205. SELECT
  206. TERM
  207. , PAY_MEANS
  208. , SUM(PAY_AMT) AS PAY_AMT
  209. FROM TAB
  210. WHERE PAY_MEANS = 'G014_60'
  211. GROUP BY TERM
  212. UNION ALL
  213. SELECT
  214. TERM
  215. , PAY_MEANS
  216. , SUM(PAY_AMT) AS PAY_AMT
  217. FROM TAB
  218. WHERE PAY_MEANS = 'G014_50'
  219. GROUP BY TERM
  220. ) Z
  221. ) Z
  222. GROUP BY TERM
  223. ORDER BY TERM
  224. */
  225. ;
  226. -- 결제통계 -> 부결제수단통계 배치
  227. INSERT INTO TB_STAT_SUB_PAY
  228. WITH TAB_PNT AS (
  229. SELECT
  230. DATE_FORMAT(PNT_UPLOAD_DT, '%Y-%m-%d') AS TERM
  231. , ORD_NO
  232. , PNT_AMT
  233. , OCCUR_GB
  234. , CUST_PNT_SQ
  235. FROM TB_CUST_POINT_HST
  236. WHERE PNT_UPLOAD_DT >= DATE_FORMAT('20210601', '%Y%m%d')
  237. AND PNT_UPLOAD_DT <= DATE_FORMAT(CONCAT('20210831', '235959'), '%Y%m%d%H%i%s')
  238. AND PNT_UPLOAD_STAT = 'G070_30'
  239. )
  240. -- 포인트 적립액
  241. , PNT_GIVE AS (
  242. SELECT
  243. TERM
  244. , SUM(PNT_AMT) AS VAL
  245. , OCCUR_GB
  246. , '1' AS GB
  247. FROM TAB_PNT
  248. WHERE 1=1
  249. GROUP BY TERM, OCCUR_GB
  250. )
  251. -- 포인트사용주문수
  252. , PNT_ORD_CNT AS (
  253. SELECT
  254. TERM
  255. , SUM(CNT) AS VAL
  256. , OCCUR_GB
  257. , '2' AS GB
  258. FROM (
  259. SELECT
  260. B.TERM
  261. , 1 AS CNT
  262. , OCCUR_GB
  263. FROM TB_ORDER_DETAIL A, TAB_PNT B
  264. WHERE A.ORD_NO = B.ORD_NO
  265. AND A.ORD_QTY > A.CNCL_RTN_QTY
  266. GROUP BY B.TERM, A.ORD_NO, OCCUR_GB
  267. ) A
  268. GROUP BY TERM, OCCUR_GB
  269. )
  270. -- 포인트사용액
  271. , PNT_USE AS (
  272. SELECT
  273. B.TERM
  274. , SUM(A.PNT_AMT * -1) AS VAL
  275. , B.OCCUR_GB
  276. , '3' AS GB
  277. FROM TB_CUST_POINT_HST A, TAB_PNT B
  278. WHERE A.ORD_NO = B.ORD_NO
  279. AND A.CUST_PNT_SQ = B.CUST_PNT_SQ
  280. AND A.OCCUR_GB IN ('G069_10', 'G069_11', 'G069_36', 'G069_40', 'G069_41', 'G069_42', 'G069_43')
  281. GROUP BY TERM, B.OCCUR_GB
  282. )
  283. , TAB_GIFT AS (
  284. SELECT
  285. DATE_FORMAT(REG_DT, '%Y-%m-%d') AS TERM
  286. , ORD_NO
  287. , GFCD_AMT
  288. , OCCUR_GB
  289. , CUST_GFCD_SQ
  290. FROM TB_CUST_GIFTCARD_HST
  291. WHERE REG_DT >= DATE_FORMAT('20210601', '%Y%m%d')
  292. AND REG_DT <= DATE_FORMAT(CONCAT('20210831', '235959'), '%Y%m%d%H%i%s')
  293. )
  294. -- 상품권등록매수
  295. , GIFT_REG_QTY AS (
  296. SELECT
  297. TERM
  298. , COUNT(1) AS CNT
  299. , OCCUR_GB
  300. , '4' AS GB
  301. FROM TAB_GIFT
  302. WHERE OCCUR_GB = 'G074_11'
  303. GROUP BY TERM, OCCUR_GB
  304. )
  305. -- 상품권사용주문수
  306. , GIFT_ORD_CNT AS (
  307. SELECT
  308. TERM
  309. , SUM(CNT) AS VAL
  310. , OCCUR_GB
  311. , '5' AS GB
  312. FROM (
  313. SELECT
  314. B.TERM
  315. , 1 AS CNT
  316. , OCCUR_GB
  317. FROM TB_ORDER_DETAIL A, TAB_GIFT B
  318. WHERE A.ORD_NO = B.ORD_NO
  319. AND A.ORD_QTY > A.CNCL_RTN_QTY
  320. GROUP BY B.TERM, A.ORD_NO, OCCUR_GB
  321. ) A
  322. GROUP BY TERM, OCCUR_GB
  323. )
  324. -- 상품권사용액
  325. , GIFT_USE AS (
  326. SELECT
  327. B.TERM
  328. , SUM(A.GFCD_AMT * -1) AS VAL
  329. , B.OCCUR_GB
  330. , '6' AS GB
  331. FROM TB_CUST_GIFTCARD_HST A, TAB_GIFT B
  332. WHERE A.ORD_NO = B.ORD_NO
  333. AND A.CUST_GFCD_SQ = B.CUST_GFCD_SQ
  334. AND A.OCCUR_GB IN ('G074_12', 'G074_13', 'G074_18', 'G074_19')
  335. GROUP BY TERM, B.OCCUR_GB
  336. )
  337. SELECT
  338. DATE_FORMAT(TERM, '%Y-%m-%d') AS TERM
  339. , OCCUR_GB
  340. , SUM(CASE WHEN GB = '1' THEN VAL ELSE 0 END) AS PNT_GIVE
  341. , SUM(CASE WHEN GB = '2' THEN VAL ELSE 0 END) AS PNT_ORD_CNT
  342. , SUM(CASE WHEN GB = '3' THEN VAL ELSE 0 END) AS PNT_USE
  343. , SUM(CASE WHEN GB = '4' THEN VAL ELSE 0 END) AS GIFT_REG_CNT
  344. , SUM(CASE WHEN GB = '5' THEN VAL ELSE 0 END) AS GIFT_ORD_CNT
  345. , SUM(CASE WHEN GB = '6' THEN VAL ELSE 0 END) AS GIFT_USE
  346. , NOW()
  347. FROM (
  348. SELECT *
  349. FROM PNT_GIVE
  350. UNION ALL
  351. SELECT *
  352. FROM PNT_USE
  353. UNION
  354. SELECT *
  355. FROM PNT_ORD_CNT
  356. UNION
  357. SELECT *
  358. FROM GIFT_REG_QTY
  359. UNION
  360. SELECT *
  361. FROM GIFT_ORD_CNT
  362. UNION
  363. SELECT *
  364. FROM GIFT_USE
  365. ) Z
  366. GROUP BY TERM, OCCUR_GB
  367. ;
  368. -- 결제통계 > 부결제수단통계화면
  369. SELECT
  370. DATE_FORMAT(A.DAY, '%m%d') AS TERM
  371. , SUM(A.PNT_GIVE) AS PNT_GIVE -- 포인트적립액
  372. , SUM(A.PNT_ORD_CNT) AS PNT_ORD_CNT -- 포인트사용주문수
  373. , SUM(A.PNT_USE) AS PNT_USE -- 포인트사용액
  374. , SUM(A.GIFT_REG_CNT) AS GIFT_REG_CNT -- 상품권등록매수
  375. , SUM(A.GIFT_ORD_CNT) AS GIFT_ORD_CNT -- 상품권주문수
  376. , SUM(A.GIFT_USE) AS GIFT_USE -- 상품권사용액
  377. FROM TB_STAT_SUB_PAY A
  378. WHERE DAY >= DATE_FORMAT('20200701', '%Y%m%d')
  379. AND DAY <= DATE_FORMAT(CONCAT('20210731', '235959'), '%Y%m%d%H%i%s')
  380. GROUP BY TERM
  381. ;
  382. -- 결제통계 > 부결제수단통계화면 > 현잔액
  383. SELECT
  384. SUM(RM_PNT_AMT) AS RM_PNT_AMT -- 포인트잔액
  385. FROM TB_CUST_POINT A
  386. WHERE A.EXP_CMP_DT IS NULL
  387. ;
  388. SELECT
  389. SUM(RM_GFCD_AMT) AS RM_GFCD_AMT -- 상품권잔액
  390. FROM TB_CUST_GIFTCARD A
  391. WHERE DATE_FORMAT(USE_EXP_DATE, '%Y%m%d') < NOW()
  392. ;