怎么在mysql中实现多表关联统计

66次阅读
没有评论

共计 1234 个字符,预计需要花费 4 分钟才能阅读完成。

自动写代码机器人,免费开通

本篇文章为大家展示了怎么在 mysql 中实现多表关联统计,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

需求:

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

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

怎么在 mysql 中实现多表关联统计

问题:

当关联超过两张表时导致统计时数据重复,只好用子查询查出来,子查询只能查一个字段,这里用 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

查询结果

怎么在 mysql 中实现多表关联统计

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

性能分析

怎么在 mysql 中实现多表关联统计

上述内容就是怎么在 mysql 中实现多表关联统计,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注丸趣 TV 行业资讯频道。

向 AI 问一下细节

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-04发表,共计1234字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)