主页 > 知识库 > mysql实现多表关联统计(子查询统计)示例

mysql实现多表关联统计(子查询统计)示例

热门标签:百度竞价排名 网站排名优化 呼叫中心市场需求 服务外包 铁路电话系统 地方门户网站 Linux服务器 AI电销

本文实例讲述了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 为三个消费数,以逗号隔开

性能分析

更多关于MySQL相关内容感兴趣的读者可查看本站专题:《MySQL查询技巧大全》、《MySQL常用函数大汇总》、《MySQL日志操作技巧大全》、《MySQL事务操作技巧汇总》、《MySQL存储过程技巧大全》及《MySQL数据库锁相关技巧汇总》

希望本文所述对大家MySQL数据库计有所帮助。

您可能感兴趣的文章:
  • MySQL里面的子查询实例
  • 解决MySQL中IN子查询会导致无法使用索引问题
  • 详细讲述MySQL中的子查询操作
  • 详解MySQL子查询(嵌套查询)、联结表、组合查询
  • mysql in语句子查询效率慢的优化技巧示例
  • MySQL优化之使用连接(join)代替子查询
  • Mysql子查询IN中使用LIMIT应用示例
  • MYSQL子查询和嵌套查询优化实例解析
  • MySQL笔记之子查询使用介绍
  • MySQL子查询中order by不生效问题的解决方法

标签:崇左 铜川 衡水 湖南 黄山 仙桃 兰州 湘潭

巨人网络通讯声明:本文标题《mysql实现多表关联统计(子查询统计)示例》,本文关键词  ;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 收缩
    • 微信客服
    • 微信二维码
    • 电话咨询

    • 400-1100-266