프로모션통계.sql 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498
  1. -- 프로모션통계 -> 쿠폰사용통계
  2. WITH TAB AS (
  3. SELECT
  4. A.ORD_NO
  5. , B.ORD_DTL_NO
  6. , B.ORD_QTY
  7. , B.CNCL_RTN_QTY
  8. , B.ORD_AMT
  9. , B.CURR_PRICE
  10. , B.CNCL_RTN_AMT
  11. , B.ORD_DTL_STAT
  12. , A.PAY_DT
  13. , C.GOODS_CD
  14. , CPN1_DC_AMT
  15. , CPN1_CPN_SQ
  16. , GOODS_CPN_DC_AMT
  17. , GOODS_CPN_SQ
  18. , CART_CPN_DC_AMT
  19. , CART_CPN_SQ
  20. FROM TB_ORDER A, TB_ORDER_DETAIL B, TB_GOODS C, TB_CUSTOMER D
  21. WHERE A.ORD_NO = B.ORD_NO
  22. AND B.GOODS_CD = C.GOODS_CD
  23. AND A.CUST_NO = D.CUST_NO
  24. AND A.PAY_DT >= DATE_FORMAT('20210610', '%Y%m%d') -- 시작일변수
  25. AND A.PAY_DT <= DATE_FORMAT(CONCAT('20210730', '235959'), '%Y%m%d%H%i%s') -- 종료일변수
  26. AND B.ORD_DTL_STAT NOT IN ('G013_00', 'G013_10', 'G013_98') -- 주문접수,입금대기,입금전취소 제외
  27. AND B.ORD_QTY > B.CNCL_RTN_QTY
  28. )
  29. , TAB_CPN_STAT AS (
  30. SELECT CPN_TYPE, A.CPN_ID, A.CPN_NM
  31. , 100 - IFNULL((SELECT MAX(BURDEN_RATE) FROM TB_COUPON_BURDEN X WHERE X.CPN_ID = A.CPN_ID), 0) AS BURDEN
  32. , COUNT(1) AS USE_CNT
  33. , SUM((C.CURR_PRICE + (SELECT SUM(OPT_ADD_PRICE * ITEM_QTY) FROM TB_ORDER_DETAIL_ITEM X WHERE X.ORD_DTL_NO = C.ORD_DTL_NO)) * (C.ORD_QTY - C.CNCL_RTN_QTY)) AS ORD_AMT
  34. , SUM(C.CPN1_DC_AMT) AS CPN_AMT
  35. FROM TB_COUPON A, TB_CUST_COUPON B, TAB C
  36. WHERE A.CPN_ID = B.CPN_ID
  37. AND B.CUST_CPN_SQ = C.CPN1_CPN_SQ
  38. AND A.CPN_TYPE = 'G230_10'-- 즉시할인쿠폰
  39. AND C.CPN1_DC_AMT > 0
  40. -- 쿠폰번호조건 (CPN_ID)
  41. GROUP BY CPN_TYPE, A.CPN_ID, A.CPN_NM
  42. UNION ALL
  43. SELECT CPN_TYPE, A.CPN_ID, A.CPN_NM
  44. , 100 - IFNULL((SELECT MAX(BURDEN_RATE) FROM TB_COUPON_BURDEN X WHERE X.CPN_ID = A.CPN_ID), 0) AS BURDEN
  45. , COUNT(1) AS USE_CNT
  46. , SUM((C.CURR_PRICE + (SELECT SUM(OPT_ADD_PRICE * ITEM_QTY) FROM TB_ORDER_DETAIL_ITEM X WHERE X.ORD_DTL_NO = C.ORD_DTL_NO)) * (C.ORD_QTY - C.CNCL_RTN_QTY)) AS ORD_AMT
  47. , SUM(C.GOODS_CPN_DC_AMT) AS CPN_AMT
  48. FROM TB_COUPON A, TB_CUST_COUPON B, TAB C
  49. WHERE A.CPN_ID = B.CPN_ID
  50. AND B.CUST_CPN_SQ = C.GOODS_CPN_SQ
  51. AND A.CPN_TYPE = 'G230_11'-- 상품쿠푼
  52. AND C.GOODS_CPN_DC_AMT > 0
  53. -- 쿠폰번호조건 (CPN_ID)
  54. GROUP BY CPN_TYPE, A.CPN_ID, A.CPN_NM
  55. UNION ALL
  56. SELECT CPN_TYPE, A.CPN_ID, A.CPN_NM
  57. , 100 - IFNULL((SELECT MAX(BURDEN_RATE) FROM TB_COUPON_BURDEN X WHERE X.CPN_ID = A.CPN_ID), 0) AS BURDEN
  58. , COUNT(1) AS USE_CNT
  59. , SUM((C.CURR_PRICE + (SELECT SUM(OPT_ADD_PRICE * ITEM_QTY) FROM TB_ORDER_DETAIL_ITEM X WHERE X.ORD_DTL_NO = C.ORD_DTL_NO)) * (C.ORD_QTY - C.CNCL_RTN_QTY)) AS ORD_AMT
  60. , SUM(C.CART_CPN_DC_AMT) AS CPN_AMT
  61. FROM TB_COUPON A, TB_CUST_COUPON B, TAB C
  62. WHERE A.CPN_ID = B.CPN_ID
  63. AND B.CUST_CPN_SQ = C.CART_CPN_SQ
  64. AND A.CPN_TYPE = 'G230_20'-- 장바구니쿠푼
  65. AND C.CART_CPN_DC_AMT > 0
  66. -- 쿠폰번호조건 (CPN_ID)
  67. GROUP BY CPN_TYPE, A.CPN_ID, A.CPN_NM
  68. UNION ALL
  69. SELECT CPN_TYPE, A.CPN_ID, A.CPN_NM
  70. , 100 - IFNULL((SELECT MAX(BURDEN_RATE) FROM TB_COUPON_BURDEN X WHERE X.CPN_ID = A.CPN_ID), 0) AS BURDEN
  71. , COUNT(1) AS USE_CNT
  72. , SUM((C.CURR_PRICE + (SELECT SUM(OPT_ADD_PRICE * ITEM_QTY) FROM TB_ORDER_DETAIL_ITEM X WHERE X.ORD_DTL_NO = C.ORD_DTL_NO)) * (C.ORD_QTY - C.CNCL_RTN_QTY)) AS ORD_AMT
  73. , SUM(D.DELV_CPN_DC_AMT) AS CPN_AMT
  74. FROM TB_COUPON A, TB_CUST_COUPON B, TAB C, TB_DELIVERY_FEE D
  75. WHERE A.CPN_ID = B.CPN_ID
  76. AND B.CUST_CPN_SQ = C.CART_CPN_SQ
  77. AND C.ORD_NO = D.ORD_NO
  78. AND B.CUST_CPN_SQ = D.DELV_CPN_SQ
  79. AND A.CPN_TYPE = 'G230_30'-- 배송비쿠푼
  80. AND D.DELV_CPN_DC_AMT > 0
  81. -- 쿠폰번호조건 (CPN_ID)
  82. GROUP BY CPN_TYPE, A.CPN_ID, A.CPN_NM
  83. )
  84. SELECT CPN_TYPE -- 쿠폰타입
  85. , FN_GET_CODE_NM('G230', CPN_TYPE) AS CPN_TYPE_NM -- 쿠폰타입명
  86. , CPN_ID -- 쿠폰번호
  87. , CPN_NM -- 쿠폰명
  88. , BURDEN -- 자사분담율
  89. , DOWN_CNT
  90. , FLOOR(USE_CNT / DOWN_CNT * 100 * 10) / 10 AS USE_RATE -- 사용율
  91. , USE_CNT -- 사용수
  92. , ORD_AMT -- 주문금액
  93. , CPN_AMT -- 쿠폰비용
  94. FROM (
  95. SELECT CPN_TYPE -- 쿠폰타입
  96. , FN_GET_CODE_NM('G230', CPN_TYPE) AS CPN_TYPE_NM -- 쿠폰타입명
  97. , CPN_ID -- 쿠폰번호
  98. , CPN_NM -- 쿠폰명
  99. , BURDEN -- 자사분담율
  100. , (SELECT COUNT(1) FROM TB_CUST_COUPON X WHERE X.CPN_ID = A.CPN_ID) AS DOWN_CNT
  101. , USE_CNT -- 사용수
  102. , ORD_AMT -- 주문금액
  103. , CPN_AMT -- 쿠폰비용
  104. FROM TAB_CPN_STAT A
  105. -- 쿠폰타입조건 (G230_10 즉시할인쿠폰, G230_11 상품쿠폰, G230_20 주문서쿠폰, G230_30 배송비쿠폰
  106. ) A
  107. ;
  108. -- 프로모션통계 -> 쿠폰사용통계 -> 상품현황
  109. -- 즉시, 상품, 장바구니 쿠폰
  110. SELECT Z.BRAND_CD
  111. , Z.BRAND_ENM
  112. , Z.GOODS_CD
  113. , Z.GOODS_NM
  114. , Z.ORD_AMT
  115. , Z.ORD_QTY
  116. , Z.CUST_CNT
  117. , X.CUST_CPN_CNT
  118. , FLOOR((X.CUST_CPN_CNT / Z.CUST_CNT * 100) / 10) * 10 AS ORD_RATE
  119. FROM (
  120. SELECT
  121. A.BRAND_CD
  122. , B.BRAND_ENM
  123. , A.GOODS_CD
  124. , A.GOODS_NM
  125. , SUM(ORD_AMT) AS ORD_AMT
  126. , SUM(ORD_QTY) AS ORD_QTY
  127. , SUM(CUST_CNT) AS CUST_CNT
  128. FROM (
  129. SELECT
  130. C.BRAND_CD
  131. , C.GOODS_CD
  132. , C.GOODS_NM
  133. , SUM((B.CURR_PRICE + (SELECT SUM(OPT_ADD_PRICE * ITEM_QTY) FROM TB_ORDER_DETAIL_ITEM X WHERE X.ORD_DTL_NO = B.ORD_DTL_NO)) * (B.ORD_QTY - B.CNCL_RTN_QTY)) AS ORD_AMT
  134. , SUM(B.ORD_QTY - B.CNCL_RTN_QTY) AS ORD_QTY
  135. , COUNT(1) OVER(PARTITION BY C.BRAND_CD, C.GOODS_CD, A.CUST_NO) AS CUST_CNT
  136. FROM TB_ORDER A, TB_ORDER_DETAIL B, TB_GOODS C, TB_CUSTOMER D
  137. WHERE A.ORD_NO = B.ORD_NO
  138. AND B.GOODS_CD = C.GOODS_CD
  139. AND A.CUST_NO = D.CUST_NO
  140. AND A.PAY_DT >= DATE_FORMAT('20210610', '%Y%m%d') -- 시작일변수
  141. AND A.PAY_DT <= DATE_FORMAT(CONCAT('20210730', '235959'), '%Y%m%d%H%i%s') -- 종료일변수
  142. AND B.ORD_DTL_STAT NOT IN ('G013_00', 'G013_10', 'G013_98') -- 주문접수,입금대기,입금전취소 제외
  143. AND B.ORD_QTY > B.CNCL_RTN_QTY
  144. GROUP BY C.BRAND_CD, C.GOODS_CD, C.GOODS_NM, A.CUST_NO
  145. ) A, TB_BRAND B
  146. WHERE A.BRAND_CD = B.BRAND_CD
  147. GROUP BY A.BRAND_CD, B.BRAND_ENM, A.GOODS_CD
  148. ) Z
  149. , (
  150. SELECT
  151. X.BRAND_CD
  152. , X.BRAND_ENM
  153. , X.GOODS_CD
  154. , X.CUST_CPN_CNT
  155. FROM (
  156. SELECT
  157. A.BRAND_CD
  158. , B.BRAND_ENM
  159. , A.GOODS_CD
  160. , SUM(A.CUST_CPN_CNT) AS CUST_CPN_CNT
  161. FROM (
  162. SELECT
  163. C.BRAND_CD
  164. , C.GOODS_CD
  165. , COUNT(1) OVER(PARTITION BY C.BRAND_CD, C.GOODS_CD, A.CUST_NO) AS CUST_CPN_CNT
  166. FROM TB_ORDER A, TB_ORDER_DETAIL B, TB_GOODS C, TB_CUSTOMER D
  167. WHERE A.ORD_NO = B.ORD_NO
  168. AND B.GOODS_CD = C.GOODS_CD
  169. AND A.CUST_NO = D.CUST_NO
  170. AND A.PAY_DT >= DATE_FORMAT('20210610', '%Y%m%d') -- 시작일변수
  171. AND A.PAY_DT <= DATE_FORMAT(CONCAT('20210730', '235959'), '%Y%m%d%H%i%s') -- 종료일변수
  172. AND B.ORD_DTL_STAT NOT IN ('G013_00', 'G013_10', 'G013_98') -- 주문접수,입금대기,입금전취소 제외
  173. AND B.ORD_QTY > B.CNCL_RTN_QTY
  174. AND EXISTS(
  175. SELECT 1
  176. FROM TB_COUPON X, TB_CUST_COUPON Y
  177. WHERE X.CPN_ID = Y.CPN_ID
  178. AND Y.CUST_CPN_SQ = B.GOODS_CPN_SQ -- B.CPN1_CPN_SQ, B.CART_CPN_SQ (쿠폰종류에따라 설정)
  179. AND X.CPN_ID = 31045 -- 쿠폰번호변수
  180. )
  181. GROUP BY C.BRAND_CD, C.GOODS_CD, A.CUST_NO
  182. ) A, TB_BRAND B
  183. WHERE A.BRAND_CD = B.BRAND_CD
  184. GROUP BY A.BRAND_CD, B.BRAND_ENM, A.GOODS_CD
  185. ) X
  186. ) X
  187. WHERE Z.BRAND_CD = X.BRAND_CD
  188. AND Z.GOODS_CD = X.GOODS_CD
  189. ;
  190. -- 배송비 쿠폰
  191. SELECT Z.BRAND_CD
  192. , Z.BRAND_ENM
  193. , Z.GOODS_CD
  194. , Z.ORD_AMT
  195. , Z.ORD_QTY
  196. , Z.CUST_CNT
  197. , X.CUST_CPN_CNT
  198. , FLOOR((X.CUST_CPN_CNT / Z.CUST_CNT * 100) / 10) * 10 AS ORD_RATE
  199. FROM (
  200. SELECT
  201. A.BRAND_CD
  202. , B.BRAND_ENM
  203. , A.GOODS_CD
  204. , SUM(ORD_AMT) AS ORD_AMT
  205. , SUM(ORD_QTY) AS ORD_QTY
  206. , SUM(CUST_CNT) AS CUST_CNT
  207. FROM (
  208. SELECT
  209. C.BRAND_CD
  210. , C.GOODS_CD
  211. , SUM((B.CURR_PRICE + (SELECT SUM(OPT_ADD_PRICE * ITEM_QTY) FROM TB_ORDER_DETAIL_ITEM X WHERE X.ORD_DTL_NO = B.ORD_DTL_NO)) * (B.ORD_QTY - B.CNCL_RTN_QTY)) AS ORD_AMT
  212. , SUM(B.ORD_QTY - B.CNCL_RTN_QTY) AS ORD_QTY
  213. , COUNT(1) OVER(PARTITION BY C.BRAND_CD, C.GOODS_CD, A.CUST_NO) AS CUST_CNT
  214. FROM TB_ORDER A, TB_ORDER_DETAIL B, TB_GOODS C, TB_CUSTOMER D
  215. WHERE A.ORD_NO = B.ORD_NO
  216. AND B.GOODS_CD = C.GOODS_CD
  217. AND A.CUST_NO = D.CUST_NO
  218. AND A.PAY_DT >= DATE_FORMAT('20210610', '%Y%m%d') -- 시작일변수
  219. AND A.PAY_DT <= DATE_FORMAT(CONCAT('20210730', '235959'), '%Y%m%d%H%i%s') -- 종료일변수
  220. AND B.ORD_DTL_STAT NOT IN ('G013_00', 'G013_10', 'G013_98') -- 주문접수,입금대기,입금전취소 제외
  221. AND B.ORD_QTY > B.CNCL_RTN_QTY
  222. GROUP BY C.BRAND_CD, C.GOODS_CD, A.CUST_NO
  223. ) A, TB_BRAND B
  224. WHERE A.BRAND_CD = B.BRAND_CD
  225. GROUP BY A.BRAND_CD, B.BRAND_ENM, A.GOODS_CD
  226. ) Z
  227. , (
  228. SELECT
  229. X.BRAND_CD
  230. , X.BRAND_ENM
  231. , X.GOODS_CD
  232. , X.CUST_CPN_CNT
  233. FROM (
  234. SELECT
  235. A.BRAND_CD
  236. , B.BRAND_ENM
  237. , A.GOODS_CD
  238. , SUM(A.CUST_CPN_CNT) AS CUST_CPN_CNT
  239. FROM (
  240. SELECT
  241. C.BRAND_CD
  242. , C.GOODS_CD
  243. , COUNT(1) OVER(PARTITION BY C.BRAND_CD, C.GOODS_CD, A.CUST_NO) AS CUST_CPN_CNT
  244. FROM TB_ORDER A, TB_ORDER_DETAIL B, TB_GOODS C, TB_CUSTOMER D, TB_DELIVERY_FEE E
  245. WHERE A.ORD_NO = B.ORD_NO
  246. AND B.GOODS_CD = C.GOODS_CD
  247. AND A.CUST_NO = D.CUST_NO
  248. AND A.ORD_NO = E.ORD_NO
  249. AND A.PAY_DT >= DATE_FORMAT('20210610', '%Y%m%d') -- 시작일변수
  250. AND A.PAY_DT <= DATE_FORMAT(CONCAT('20210730', '235959'), '%Y%m%d%H%i%s') -- 종료일변수
  251. AND B.ORD_DTL_STAT NOT IN ('G013_00', 'G013_10', 'G013_98') -- 주문접수,입금대기,입금전취소 제외
  252. AND B.ORD_QTY > B.CNCL_RTN_QTY
  253. AND EXISTS(
  254. SELECT 1
  255. FROM TB_COUPON X, TB_CUST_COUPON Y
  256. WHERE X.CPN_ID = Y.CPN_ID
  257. AND Y.CUST_CPN_SQ = E.DELV_CPN_SQ
  258. AND X.CPN_ID = 31045 -- 쿠폰번호변수
  259. )
  260. AND E.DELV_CPN_DC_AMT > 0
  261. GROUP BY C.BRAND_CD, C.GOODS_CD, A.CUST_NO
  262. ) A, TB_BRAND B
  263. WHERE A.BRAND_CD = B.BRAND_CD
  264. GROUP BY A.BRAND_CD, B.BRAND_ENM, A.GOODS_CD
  265. ) X
  266. ) X
  267. WHERE Z.BRAND_CD = X.BRAND_CD
  268. AND Z.GOODS_CD = X.GOODS_CD
  269. ;
  270. -- 프로모션통계 -> 다다익선통계
  271. WITH TAB AS (
  272. SELECT A.ORD_NO
  273. , B.ORD_DTL_NO
  274. , B.ORD_QTY
  275. , B.CNCL_RTN_QTY
  276. , B.ORD_AMT
  277. , B.CURR_PRICE
  278. , B.CNCL_RTN_AMT
  279. , B.ORD_DTL_STAT
  280. , A.PAY_DT
  281. , C.GOODS_CD
  282. , B.TMTB1_SQ
  283. , B.TMTB1_DC_AMT
  284. , B.TMTB2_SQ
  285. , B.TMTB2_DC_AMT
  286. FROM TB_ORDER A,
  287. TB_ORDER_DETAIL B,
  288. TB_GOODS C,
  289. TB_CUSTOMER D
  290. WHERE A.ORD_NO = B.ORD_NO
  291. AND B.GOODS_CD = C.GOODS_CD
  292. AND A.CUST_NO = D.CUST_NO
  293. AND A.PAY_DT >= DATE_FORMAT('20210610', '%Y%m%d') -- 시작일변수
  294. AND A.PAY_DT <= DATE_FORMAT(CONCAT('20210730', '235959'), '%Y%m%d%H%i%s') -- 종료일변수
  295. AND B.ORD_DTL_STAT NOT IN ('G013_00', 'G013_10', 'G013_98') -- 주문접수,입금대기,입금전취소 제외
  296. AND B.ORD_QTY > B.CNCL_RTN_QTY
  297. -- 프로모션유형 선택값 없을때
  298. AND (B.TMTB1_DC_AMT + B.TMTB2_DC_AMT) > 0
  299. -- 수량할인
  300. /*AND TMTB1_DC_AMT > 0
  301. -- 금액할인
  302. AND TMTB2_DC_AMT > 0
  303. -- 수량+금액 할인
  304. AND TMTB1_DC_AMT > 0
  305. AND TMTB2_DC_AMT > 0*/
  306. -- 프로모션 번호 (TMTB1_SQ OR TMTB2_SQ)
  307. )
  308. -- 수량할인
  309. , TMTB1 AS (
  310. SELECT
  311. TMTB_SQ
  312. , TMTB_NM
  313. , FN_GET_CODE_NM('G810', APPLY_GB) AS APPLY_GB
  314. , SUM(ORD_CNT) AS ORD_CNT
  315. , SUM(ORD_AMT) AS ORD_AMT
  316. , SUM(DC_AMT) AS DC_AMT
  317. FROM
  318. (
  319. SELECT A.TMTB_SQ
  320. , A.TMTB_NM
  321. , APPLY_GB
  322. , COUNT(1) AS ORD_CNT
  323. , SUM((B.CURR_PRICE + (SELECT SUM(OPT_ADD_PRICE * ITEM_QTY) FROM TB_ORDER_DETAIL_ITEM X WHERE X.ORD_DTL_NO = B.ORD_DTL_NO)) * (B.ORD_QTY - B.CNCL_RTN_QTY)) AS ORD_AMT
  324. , SUM(B.TMTB1_DC_AMT) AS DC_AMT
  325. FROM TB_TMTB A, TAB B
  326. WHERE A.TMTB_SQ = B.TMTB1_SQ
  327. GROUP BY A.TMTB_SQ, A.TMTB_NM, A.APPLY_GB, B.ORD_NO
  328. ) X
  329. GROUP BY TMTB_SQ, TMTB_NM, APPLY_GB
  330. )
  331. -- 금액할인
  332. , TMTB2 AS (
  333. SELECT
  334. TMTB_SQ
  335. , TMTB_NM
  336. , FN_GET_CODE_NM('G810', APPLY_GB) AS APPLY_GB
  337. , SUM(ORD_CNT) AS ORD_CNT
  338. , SUM(ORD_AMT) AS ORD_AMT
  339. , SUM(DC_AMT) AS DC_AMT
  340. FROM
  341. (
  342. SELECT A.TMTB_SQ
  343. , A.TMTB_NM
  344. , APPLY_GB
  345. , COUNT(1) AS ORD_CNT
  346. , SUM((B.CURR_PRICE + (SELECT SUM(OPT_ADD_PRICE * ITEM_QTY) FROM TB_ORDER_DETAIL_ITEM X WHERE X.ORD_DTL_NO = B.ORD_DTL_NO)) * (B.ORD_QTY - B.CNCL_RTN_QTY)) AS ORD_AMT
  347. , SUM(B.TMTB1_DC_AMT) AS DC_AMT
  348. FROM TB_TMTB A, TAB B
  349. WHERE A.TMTB_SQ = B.TMTB2_SQ
  350. GROUP BY A.TMTB_SQ, A.TMTB_NM, A.APPLY_GB, B.ORD_NO
  351. ) X
  352. GROUP BY TMTB_SQ, TMTB_NM, APPLY_GB
  353. )
  354. SELECT *
  355. FROM TMTB1
  356. UNION ALL
  357. SELECT *
  358. FROM TMTB2
  359. ;
  360. -- 프로모션통계 -> 다다익선통계 -> 상품현황
  361. SELECT
  362. A.BRAND_CD
  363. , B.BRAND_ENM
  364. , A.GOODS_CD
  365. , A.GOODS_NM
  366. , SUM(ORD_AMT) AS ORD_AMT
  367. , SUM(ORD_QTY) AS ORD_QTY
  368. , SUM(CUST_CNT) AS CUST_CNT
  369. FROM (
  370. SELECT
  371. C.BRAND_CD
  372. , C.GOODS_CD
  373. , C.GOODS_NM
  374. , SUM((B.CURR_PRICE + (SELECT SUM(OPT_ADD_PRICE * ITEM_QTY) FROM TB_ORDER_DETAIL_ITEM X WHERE X.ORD_DTL_NO = B.ORD_DTL_NO)) * (B.ORD_QTY - B.CNCL_RTN_QTY)) AS ORD_AMT
  375. , SUM(B.ORD_QTY - B.CNCL_RTN_QTY) AS ORD_QTY
  376. , COUNT(1) OVER(PARTITION BY C.BRAND_CD, C.GOODS_CD, A.CUST_NO) AS CUST_CNT
  377. FROM TB_ORDER A, TB_ORDER_DETAIL B, TB_GOODS C, TB_CUSTOMER D
  378. WHERE A.ORD_NO = B.ORD_NO
  379. AND B.GOODS_CD = C.GOODS_CD
  380. AND A.CUST_NO = D.CUST_NO
  381. AND A.PAY_DT >= DATE_FORMAT('20210610', '%Y%m%d') -- 시작일변수
  382. AND A.PAY_DT <= DATE_FORMAT(CONCAT('20210730', '235959'), '%Y%m%d%H%i%s') -- 종료일변수
  383. AND B.ORD_DTL_STAT NOT IN ('G013_00', 'G013_10', 'G013_98') -- 주문접수,입금대기,입금전취소 제외
  384. AND B.ORD_QTY > B.CNCL_RTN_QTY
  385. -- 수량
  386. -- AND B.TMTB1_SQ = 14
  387. -- 금액
  388. AND B.TMTB2_SQ = 33
  389. GROUP BY C.BRAND_CD, C.GOODS_CD, A.CUST_NO
  390. ) A, TB_BRAND B
  391. WHERE A.BRAND_CD = B.BRAND_CD
  392. GROUP BY A.BRAND_CD, B.BRAND_ENM, A.GOODS_CD
  393. ;
  394. -- 프로모션통계 -> 기획전통계
  395. SELECT
  396. CASE WHEN DISTRIBUTION_GB = 'G065_20' THEN '입점' ELSE '위탁' END AS DISTRIBUTION_GB
  397. , BRAND_ENM
  398. , PLAN_SQ
  399. , (SELECT PLAN_NM FROM TB_PLAN P WHERE P.PLAN_SQ = X.PLAN_SQ) AS PLAN_NM
  400. , SUM(ORD_AMT) AS ORD_AMT
  401. , SUM(ORD_CNT) AS ORD_CNT
  402. FROM (
  403. SELECT C.DISTRIBUTION_GB
  404. , F.BRAND_ENM
  405. , E.PLAN_SQ
  406. , SUM((B.CURR_PRICE + (SELECT SUM(OPT_ADD_PRICE * ITEM_QTY) FROM TB_ORDER_DETAIL_ITEM X WHERE X.ORD_DTL_NO = B.ORD_DTL_NO)) * (B.ORD_QTY - B.CNCL_RTN_QTY)) AS ORD_AMT
  407. , COUNT(1) AS ORD_CNT
  408. FROM TB_ORDER A,
  409. TB_ORDER_DETAIL B,
  410. TB_GOODS C,
  411. TB_CUSTOMER D,
  412. TB_PLAN_DETAIL E,
  413. TB_BRAND F
  414. WHERE A.ORD_NO = B.ORD_NO
  415. AND B.GOODS_CD = C.GOODS_CD
  416. AND A.CUST_NO = D.CUST_NO
  417. AND B.PLAN_DTL_SQ = E.PLAN_DTL_SQ
  418. AND F.BRAND_CD = C.BRAND_CD
  419. AND A.PAY_DT >= DATE_FORMAT('20210610', '%Y%m%d') -- 시작일변수
  420. AND A.PAY_DT <= DATE_FORMAT(CONCAT('20210730', '235959'), '%Y%m%d%H%i%s') -- 종료일변수
  421. AND B.ORD_DTL_STAT NOT IN ('G013_00', 'G013_10', 'G013_98') -- 주문접수,입금대기,입금전취소 제외
  422. AND B.ORD_QTY > B.CNCL_RTN_QTY
  423. -- 위탁
  424. -- AND C.DISTRIBUTION_GB IN ('G065_10', 'G065_11', 'G065_12')
  425. -- 입점
  426. -- AND C.DISTRIBUTION_GB = 'G065_20'
  427. -- AND E.PLAN_SQ = 기획전번호
  428. GROUP BY C.DISTRIBUTION_GB, F.BRAND_ENM, E.PLAN_SQ, A.ORD_NO
  429. ) X
  430. GROUP BY DISTRIBUTION_GB, BRAND_ENM, PLAN_SQ
  431. ;
  432. -- 프로모션통계 -> 기획전통계 -> 상품구매현황
  433. WITH TAB AS (
  434. SELECT SUM(CUST_CNT) AS TOT_CUST_CNT
  435. FROM (
  436. SELECT COUNT(1) AS CUST_CNT
  437. FROM TB_ORDER A,
  438. TB_ORDER_DETAIL B,
  439. TB_GOODS C,
  440. TB_CUSTOMER D,
  441. TB_PLAN_DETAIL E,
  442. TB_BRAND F
  443. WHERE A.ORD_NO = B.ORD_NO
  444. AND B.GOODS_CD = C.GOODS_CD
  445. AND A.CUST_NO = D.CUST_NO
  446. AND B.PLAN_DTL_SQ = E.PLAN_DTL_SQ
  447. AND F.BRAND_CD = C.BRAND_CD
  448. AND A.PAY_DT >= DATE_FORMAT('20210610', '%Y%m%d') -- 시작일변수
  449. AND A.PAY_DT <= DATE_FORMAT(CONCAT('20210730', '235959'), '%Y%m%d%H%i%s') -- 종료일변수
  450. AND B.ORD_DTL_STAT NOT IN ('G013_00', 'G013_10', 'G013_98') -- 주문접수,입금대기,입금전취소 제외
  451. AND B.ORD_QTY > B.CNCL_RTN_QTY
  452. -- AND E.PLAN_SQ = 기획전번호
  453. GROUP BY A.CUST_NO
  454. ) Z
  455. )
  456. SELECT
  457. CASE WHEN DISTRIBUTION_GB = 'G065_20' THEN '입점' ELSE '위탁' END AS DISTRIBUTION_GB
  458. , GOODS_CD
  459. , GOODS_NM
  460. , SUM(ORD_AMT) AS ORD_AMT
  461. , SUM(ORD_QTY) AS ORD_QTY
  462. , SUM(CUST_CNT) AS CUST_CNT
  463. , FLOOR((SUM(CUST_CNT) / (SELECT TOT_CUST_CNT FROM TAB) * 100) / 10) * 10 AS ORD_RATE
  464. FROM (
  465. SELECT C.DISTRIBUTION_GB
  466. , C.GOODS_CD
  467. , C.GOODS_NM
  468. , SUM((B.CURR_PRICE + (SELECT SUM(OPT_ADD_PRICE * ITEM_QTY) FROM TB_ORDER_DETAIL_ITEM X WHERE X.ORD_DTL_NO = B.ORD_DTL_NO)) * (B.ORD_QTY - B.CNCL_RTN_QTY)) AS ORD_AMT
  469. , SUM(B.ORD_QTY - B.CNCL_RTN_QTY) AS ORD_QTY
  470. , COUNT(1) OVER(PARTITION BY C.DISTRIBUTION_GB, C.GOODS_CD, A.CUST_NO) AS CUST_CNT
  471. FROM TB_ORDER A,
  472. TB_ORDER_DETAIL B,
  473. TB_GOODS C,
  474. TB_CUSTOMER D,
  475. TB_PLAN_DETAIL E,
  476. TB_BRAND F
  477. WHERE A.ORD_NO = B.ORD_NO
  478. AND B.GOODS_CD = C.GOODS_CD
  479. AND A.CUST_NO = D.CUST_NO
  480. AND B.PLAN_DTL_SQ = E.PLAN_DTL_SQ
  481. AND F.BRAND_CD = C.BRAND_CD
  482. AND A.PAY_DT >= DATE_FORMAT('20210610', '%Y%m%d') -- 시작일변수
  483. AND A.PAY_DT <= DATE_FORMAT(CONCAT('20210730', '235959'), '%Y%m%d%H%i%s') -- 종료일변수
  484. AND B.ORD_DTL_STAT NOT IN ('G013_00', 'G013_10', 'G013_98') -- 주문접수,입금대기,입금전취소 제외
  485. AND B.ORD_QTY > B.CNCL_RTN_QTY
  486. -- AND E.PLAN_SQ = 기획전번호
  487. GROUP BY C.DISTRIBUTION_GB, C.GOODS_CD, C.GOODS_NM, A.CUST_NO
  488. ) X
  489. GROUP BY DISTRIBUTION_GB, GOODS_CD, GOODS_NM
  490. ;