AnalyticsMerchantReportMapper.xml 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3. <mapper namespace="shop.alien.mapper.AnalyticsMerchantReportMapper">
  4. <sql id="merchantUnion">
  5. SELECT merchant_id, shop_type, gmv, pay_count, verify_count, settle_time, settle_status
  6. FROM analytics_merchant_stat_history
  7. WHERE stat_date &gt;= #{startDate}
  8. AND stat_date &lt;= #{endDate}
  9. UNION ALL
  10. SELECT merchant_id, shop_type, gmv, pay_count, verify_count, settle_time, settle_status
  11. FROM analytics_merchant_stat_today
  12. WHERE #{endDate} &gt;= CURDATE()
  13. AND #{startDate} &lt;= CURDATE()
  14. </sql>
  15. <select id="sumMerchantMetrics" resultType="java.util.HashMap">
  16. SELECT COALESCE(SUM(today_gmv), 0) AS totalGmv,
  17. COALESCE(ROUND(SUM(today_gmv) / NULLIF(SUM(pay_user_count), 0), 2), 0) AS avgOrderAmount
  18. FROM analytics_daily_summary
  19. WHERE stat_date &gt;= #{startDate}
  20. AND stat_date &lt;= #{endDate}
  21. </select>
  22. <select id="listGmvTrend" resultType="java.util.HashMap">
  23. SELECT stat_date AS statDate,
  24. DATE_FORMAT(stat_date, '%m-%d') AS label,
  25. COALESCE(today_gmv, 0) AS gmv
  26. FROM analytics_daily_summary
  27. WHERE stat_date &gt;= #{startDate}
  28. AND stat_date &lt;= #{endDate}
  29. ORDER BY stat_date ASC
  30. </select>
  31. <select id="sumGmvByCategory" resultType="java.util.HashMap">
  32. SELECT business_category AS code,
  33. COALESCE(SUM(gmv), 0) AS gmv
  34. FROM (
  35. SELECT business_category, gmv
  36. FROM analytics_category_daily_history
  37. WHERE stat_date &gt;= #{startDate}
  38. AND stat_date &lt;= #{endDate}
  39. UNION ALL
  40. SELECT business_category, gmv
  41. FROM analytics_category_daily_today
  42. WHERE #{endDate} &gt;= CURDATE()
  43. AND #{startDate} &lt;= CURDATE()
  44. ) t
  45. GROUP BY business_category
  46. ORDER BY gmv DESC
  47. </select>
  48. <select id="listAvgOrderTrend" resultType="java.util.HashMap">
  49. SELECT d.stat_date AS statDate,
  50. DATE_FORMAT(d.stat_date, '%m-%d') AS label,
  51. COALESCE(d.avg_order_amount, 0) AS avgOrderAmount,
  52. COALESCE(m.avgPayCount, 0) AS avgPayCount
  53. FROM analytics_daily_summary d
  54. LEFT JOIN (
  55. SELECT stat_date,
  56. ROUND(SUM(pay_count) / NULLIF(COUNT(DISTINCT CASE WHEN pay_count &gt; 0 THEN merchant_id END), 0), 2) AS avgPayCount
  57. FROM (
  58. SELECT stat_date, merchant_id, pay_count
  59. FROM analytics_merchant_stat_history
  60. WHERE stat_date &gt;= #{startDate}
  61. AND stat_date &lt;= #{endDate}
  62. UNION ALL
  63. SELECT CURDATE() AS stat_date, merchant_id, pay_count
  64. FROM analytics_merchant_stat_today
  65. WHERE #{endDate} &gt;= CURDATE()
  66. AND #{startDate} &lt;= CURDATE()
  67. ) pay
  68. GROUP BY stat_date
  69. ) m ON d.stat_date = m.stat_date
  70. WHERE d.stat_date &gt;= #{startDate}
  71. AND d.stat_date &lt;= #{endDate}
  72. ORDER BY d.stat_date ASC
  73. </select>
  74. <select id="listMerchantGmvTop10" resultType="java.util.HashMap">
  75. SELECT merchant_id AS merchantId,
  76. MAX(shop_type) AS shopType,
  77. COALESCE(SUM(gmv), 0) AS gmv
  78. FROM (
  79. <include refid="merchantUnion"/>
  80. ) t
  81. GROUP BY merchant_id
  82. ORDER BY gmv DESC
  83. LIMIT 10
  84. </select>
  85. <select id="pageSettledMerchantDetail" resultType="shop.alien.entity.analytics.AnalyticsMerchantStat">
  86. SELECT base.merchant_id AS merchantId,
  87. base.shop_type AS shopType,
  88. base.settle_time AS settleTime,
  89. base.settle_status AS settleStatus,
  90. COALESCE(period.gmv, 0) AS gmv
  91. FROM (
  92. SELECT merchant_id,
  93. MAX(shop_type) AS shop_type,
  94. MAX(settle_time) AS settle_time,
  95. MAX(settle_status) AS settle_status
  96. FROM (
  97. SELECT merchant_id, shop_type, settle_time, settle_status
  98. FROM analytics_merchant_stat_history
  99. WHERE settle_status = 1
  100. AND settle_time IS NOT NULL
  101. AND settle_time &gt;= #{startDate}
  102. AND settle_time &lt; DATE_ADD(#{endDate}, INTERVAL 1 DAY)
  103. UNION ALL
  104. SELECT merchant_id, shop_type, settle_time, settle_status
  105. FROM analytics_merchant_stat_today
  106. WHERE settle_status = 1
  107. AND settle_time IS NOT NULL
  108. AND settle_time &gt;= #{startDate}
  109. AND settle_time &lt; DATE_ADD(#{endDate}, INTERVAL 1 DAY)
  110. ) settled
  111. GROUP BY merchant_id
  112. ) base
  113. LEFT JOIN (
  114. SELECT merchant_id, COALESCE(SUM(gmv), 0) AS gmv
  115. FROM (
  116. <include refid="merchantUnion"/>
  117. ) t
  118. GROUP BY merchant_id
  119. ) period ON base.merchant_id = period.merchant_id
  120. ORDER BY base.settle_time DESC
  121. </select>
  122. <select id="listReviewRateTrend" resultType="java.util.HashMap">
  123. SELECT stat_date AS statDate,
  124. DATE_FORMAT(stat_date, '%m-%d') AS label,
  125. COALESCE(merchant_review_rate, 0) AS reviewRate
  126. FROM analytics_daily_summary
  127. WHERE stat_date &gt;= #{startDate}
  128. AND stat_date &lt;= #{endDate}
  129. ORDER BY stat_date ASC
  130. </select>
  131. </mapper>