当前位置:   article > 正文

mysql多表关联统计_多表关联实时计算

多表关联实时计算

mysql多表关联统计子查询统计

需求:

统计每本书打赏金额,不同时间的充值数据统计,消费统计,

设计四个表,book 书本表,orders 订单表  reward_log打赏表   consume_log 消费表 ,通过book_id与book表关联,

问题:

当关联超过两张表时导致统计时数据重复,只好用子查询查出来,子查询只能查一个字段,这里用CONCAT_WS函数将多个字段其拼接

实现:

查询代码如下

  1. SELECT
  2. b.id,
  3. b.book_name,
  4. sum( IF ( o.create_time > 0 && o.create_time < 9999999999, o.price, 0 ) ) today_pay_money,
  5. sum( IF ( o.create_time > 0 && o.create_time < 9999999999, 1, 0 ) ) today_pay_num,
  6. sum( IF ( o.create_time > 999 && o.create_time < 9999, o.price, 0 ) ) yesterday_pay_money,
  7. sum( IF ( o.create_time > 999 && o.create_time < 9999, 1, 0 ) ) yesterday_pay_num,
  8. sum(o.price) total_pay_money,
  9. sum( IF ( o.create_time > 9999 && o.create_time < 99999, 1, 0 ) ) total_pay_num,
  10. ( SELECT SUM( total_score ) FROM book_reward_log WHERE book_id = b.id ) total_score,
  11. (
  12. SELECT
  13. CONCAT_WS(
  14. ',',
  15. SUM( IF ( create_time > 0 && create_time < 998, score, 0 ) ),
  16. SUM( IF ( create_time > 9999 && create_time < 99998, score, 0 ) ),
  17. SUM( IF ( create_time > 99999 && create_time < 999998, score, 0 ) )
  18. )
  19. FROM
  20. book_consume_log
  21. WHERE
  22. book_id = b.id
  23. ) score
  24. FROM
  25. book_book b
  26. LEFT JOIN book_orders o ON b.id = o.bid
  27. GROUP BY
  28. b.id

查询结果

score 为三个消费数,以逗号隔开

性能分析

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/425170
推荐阅读
相关标签
  

闽ICP备14008679号