最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
mysql如何实现多表关联统计 mysql实现多表关联统计方法
时间:2022-06-29 09:04:08 编辑:袖梨 来源:一聚教程网
本篇文章小编给大家分享一下mysql实现多表关联统计方法,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。
需求:
统计每本书打赏金额,不同时间的充值数据统计,消费统计,
设计四个表,book 书本表,orders 订单表 reward_log打赏表consume_log 消费表 ,通过book_id与book表关联,
问题:
当关联超过两张表时导致统计时数据重复,只好用子查询查出来,子查询只能查一个字段,这里用CONCAT_WS函数将多个字段其拼接
实现:
查询代码如下
SELECT b.id, b.book_name, sum( IF ( o.create_time > 0 && o.create_time < 9999999999, o.price, 0 ) ) today_pay_money, sum( IF ( o.create_time > 0 && o.create_time < 9999999999, 1, 0 ) ) today_pay_num, sum( IF ( o.create_time > 999 && o.create_time < 9999, o.price, 0 ) ) yesterday_pay_money, sum( IF ( o.create_time > 999 && o.create_time < 9999, 1, 0 ) ) yesterday_pay_num, sum(o.price) total_pay_money, sum( IF ( o.create_time > 9999 && o.create_time < 99999, 1, 0 ) ) total_pay_num, ( SELECT SUM( total_score ) FROM book_reward_log WHERE book_id = b.id ) total_score, ( SELECT CONCAT_WS( ',', SUM( IF ( create_time > 0 && create_time < 998, score, 0 ) ), SUM( IF ( create_time > 9999 && create_time < 99998, score, 0 ) ), SUM( IF ( create_time > 99999 && create_time < 999998, score, 0 ) ) ) FROM book_consume_log WHERE book_id = b.id ) score FROM book_book b LEFT JOIN book_orders o ON b.id = o.bid GROUP BY b.id
查询结果
score 为三个消费数,以逗号隔开
性能分析
相关文章
- 人们熟悉的寄居蟹属于以下哪种分类 神奇海洋11月21日答案 11-21
- 第五人格11.22共研服有什么更新 11月22日共研服更新内容介绍 11-21
- 原神恰斯卡怎么培养 11-21
- 无期迷途四星装束是谁 11-21
- 王者荣耀帝丹高中校服怎么获得 11-21
- 光遇姆明季后续版本怎么玩 11-21