20260822_seed_merchant_daily_statistics.sql 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. -- ============================================================
  2. -- 商户每日统计演示数据
  3. -- 日期: 2026-08-22
  4. -- 说明: 为【演示数据】商户生成最近 60 天数据;INSERT IGNORE 保证可重复执行,
  5. -- 不会覆盖之后由真实订单任务生成的同日统计。
  6. -- ============================================================
  7. INSERT IGNORE INTO `sa_merchant_daily_statistics` (
  8. `merchant_id`, `stat_date`, `turnover_cents`, `income_cents`, `order_count`,
  9. `wechat_turnover_cents`, `alipay_turnover_cents`, `balance_turnover_cents`,
  10. `wechat_order_count`, `alipay_order_count`, `balance_order_count`,
  11. `device_usage_rate`, `device_count`, `create_time`, `update_time`
  12. )
  13. SELECT
  14. base.`merchant_id`,
  15. base.`stat_date`,
  16. base.`turnover_cents`,
  17. ROUND(base.`turnover_cents` * base.`profit_rate` / 100),
  18. base.`order_count`,
  19. FLOOR(base.`turnover_cents` * 0.56),
  20. FLOOR(base.`turnover_cents` * 0.34),
  21. base.`turnover_cents` - FLOOR(base.`turnover_cents` * 0.56) - FLOOR(base.`turnover_cents` * 0.34),
  22. FLOOR(base.`order_count` * 0.56),
  23. FLOOR(base.`order_count` * 0.34),
  24. base.`order_count` - FLOOR(base.`order_count` * 0.56) - FLOOR(base.`order_count` * 0.34),
  25. base.`device_usage_rate`,
  26. base.`device_count`,
  27. NOW(),
  28. NOW()
  29. FROM (
  30. SELECT
  31. merchant.`id` AS `merchant_id`,
  32. DATE_SUB(CURDATE(), INTERVAL day_offset.`n` DAY) AS `stat_date`,
  33. CASE
  34. WHEN merchant.`total_amount` <= 0 THEN 0
  35. ELSE 1800 + MOD(merchant.`id` * 193 + day_offset.`n` * 431, 14000)
  36. END AS `turnover_cents`,
  37. CASE
  38. WHEN merchant.`total_amount` <= 0 THEN 0
  39. ELSE 2 + MOD(merchant.`id` * 7 + day_offset.`n` * 3, 18)
  40. END AS `order_count`,
  41. CASE
  42. WHEN merchant.`device_count` <= 0 THEN 0
  43. ELSE ROUND(28 + MOD(merchant.`id` * 17 + day_offset.`n` * 11, 6900) / 100, 2)
  44. END AS `device_usage_rate`,
  45. merchant.`device_count`,
  46. merchant.`profit_rate`
  47. FROM `sa_merchant` merchant
  48. CROSS JOIN (
  49. SELECT ones.`n` + tens.`n` * 10 AS `n`
  50. FROM (
  51. SELECT 0 AS `n` UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4
  52. UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9
  53. ) ones
  54. CROSS JOIN (
  55. SELECT 0 AS `n` UNION ALL SELECT 1 UNION ALL SELECT 2
  56. UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5
  57. ) tens
  58. ) day_offset
  59. WHERE merchant.`delete_time` IS NULL
  60. AND merchant.`description` LIKE '【演示数据】%'
  61. ) base;