| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
- <mapper namespace="shop.alien.mapper.AnalyticsMerchantReportMapper">
- <sql id="merchantUnion">
- SELECT merchant_id, shop_type, gmv, pay_count, verify_count, settle_time, settle_status
- FROM analytics_merchant_stat_history
- WHERE stat_date >= #{startDate}
- AND stat_date <= #{endDate}
- UNION ALL
- SELECT merchant_id, shop_type, gmv, pay_count, verify_count, settle_time, settle_status
- FROM analytics_merchant_stat_today
- WHERE #{endDate} >= CURDATE()
- AND #{startDate} <= CURDATE()
- </sql>
- <select id="sumMerchantMetrics" resultType="java.util.HashMap">
- SELECT COALESCE(SUM(today_gmv), 0) AS totalGmv,
- COALESCE(ROUND(SUM(today_gmv) / NULLIF(SUM(pay_user_count), 0), 2), 0) AS avgOrderAmount
- FROM analytics_daily_summary
- WHERE stat_date >= #{startDate}
- AND stat_date <= #{endDate}
- </select>
- <select id="listGmvTrend" resultType="java.util.HashMap">
- SELECT stat_date AS statDate,
- DATE_FORMAT(stat_date, '%m-%d') AS label,
- COALESCE(today_gmv, 0) AS gmv
- FROM analytics_daily_summary
- WHERE stat_date >= #{startDate}
- AND stat_date <= #{endDate}
- ORDER BY stat_date ASC
- </select>
- <select id="sumGmvByCategory" resultType="java.util.HashMap">
- SELECT business_category AS code,
- COALESCE(SUM(gmv), 0) AS gmv
- FROM (
- SELECT business_category, gmv
- FROM analytics_category_daily_history
- WHERE stat_date >= #{startDate}
- AND stat_date <= #{endDate}
- UNION ALL
- SELECT business_category, gmv
- FROM analytics_category_daily_today
- WHERE #{endDate} >= CURDATE()
- AND #{startDate} <= CURDATE()
- ) t
- GROUP BY business_category
- ORDER BY gmv DESC
- </select>
- <select id="listAvgOrderTrend" resultType="java.util.HashMap">
- SELECT d.stat_date AS statDate,
- DATE_FORMAT(d.stat_date, '%m-%d') AS label,
- COALESCE(d.avg_order_amount, 0) AS avgOrderAmount,
- COALESCE(m.avgPayCount, 0) AS avgPayCount
- FROM analytics_daily_summary d
- LEFT JOIN (
- SELECT stat_date,
- ROUND(SUM(pay_count) / NULLIF(COUNT(DISTINCT CASE WHEN pay_count > 0 THEN merchant_id END), 0), 2) AS avgPayCount
- FROM (
- SELECT stat_date, merchant_id, pay_count
- FROM analytics_merchant_stat_history
- WHERE stat_date >= #{startDate}
- AND stat_date <= #{endDate}
- UNION ALL
- SELECT CURDATE() AS stat_date, merchant_id, pay_count
- FROM analytics_merchant_stat_today
- WHERE #{endDate} >= CURDATE()
- AND #{startDate} <= CURDATE()
- ) pay
- GROUP BY stat_date
- ) m ON d.stat_date = m.stat_date
- WHERE d.stat_date >= #{startDate}
- AND d.stat_date <= #{endDate}
- ORDER BY d.stat_date ASC
- </select>
- <select id="listMerchantGmvTop10" resultType="java.util.HashMap">
- SELECT merchant_id AS merchantId,
- MAX(shop_type) AS shopType,
- COALESCE(SUM(gmv), 0) AS gmv
- FROM (
- <include refid="merchantUnion"/>
- ) t
- GROUP BY merchant_id
- ORDER BY gmv DESC
- LIMIT 10
- </select>
- <select id="pageSettledMerchantDetail" resultType="shop.alien.entity.analytics.AnalyticsMerchantStat">
- SELECT base.merchant_id AS merchantId,
- base.shop_type AS shopType,
- base.settle_time AS settleTime,
- base.settle_status AS settleStatus,
- COALESCE(period.gmv, 0) AS gmv
- FROM (
- SELECT merchant_id,
- MAX(shop_type) AS shop_type,
- MAX(settle_time) AS settle_time,
- MAX(settle_status) AS settle_status
- FROM (
- SELECT merchant_id, shop_type, settle_time, settle_status
- FROM analytics_merchant_stat_history
- WHERE settle_status = 1
- AND settle_time IS NOT NULL
- AND settle_time >= #{startDate}
- AND settle_time < DATE_ADD(#{endDate}, INTERVAL 1 DAY)
- UNION ALL
- SELECT merchant_id, shop_type, settle_time, settle_status
- FROM analytics_merchant_stat_today
- WHERE settle_status = 1
- AND settle_time IS NOT NULL
- AND settle_time >= #{startDate}
- AND settle_time < DATE_ADD(#{endDate}, INTERVAL 1 DAY)
- ) settled
- GROUP BY merchant_id
- ) base
- LEFT JOIN (
- SELECT merchant_id, COALESCE(SUM(gmv), 0) AS gmv
- FROM (
- <include refid="merchantUnion"/>
- ) t
- GROUP BY merchant_id
- ) period ON base.merchant_id = period.merchant_id
- ORDER BY base.settle_time DESC
- </select>
- <select id="listReviewRateTrend" resultType="java.util.HashMap">
- SELECT stat_date AS statDate,
- DATE_FORMAT(stat_date, '%m-%d') AS label,
- COALESCE(merchant_review_rate, 0) AS reviewRate
- FROM analytics_daily_summary
- WHERE stat_date >= #{startDate}
- AND stat_date <= #{endDate}
- ORDER BY stat_date ASC
- </select>
- </mapper>
|