mysql数据库实现多表关联统计、子查询统计示例
文章主要介绍了mysql实现多表关联统计(子查询统计),结合具体案例形式分析了mysql多表关联统计的原理、实现方法及相关操作注意事项,需要的朋友可以参考下。本文实例讲述了my...
文章主要介绍了MySQL实现多表关联统计(子查询统计),结合具体案例形式分析了mysql多表关联统计的原理、实现方法及相关操作注意事项,需要的朋友可以参考下。
本文实例讲述了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 InnoDB数据库如何保证事务特性示例详解
文章主要给大家介绍了关于MySQL InnoDB如何保证事务特性的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用MySQL具有一定的参考学习价值,需要的朋友们下面来一起...
-
数据库 MySQL8.0+常用命令及操作命令详解
文章主要介绍了MySQL8.0+常用命令及操作命令,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下。开启远程访问通过以下命令开启root用户远程访问权限:CREATE USER 'root'...
-
Mysql8.0.17数据库安装图文教程
本文通过图文并茂的形式给大家介绍了Mysql8.0.17安装,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下...
-
SQL Server 2000/2005/2008删除或压缩数据库日志的方法
最近win2008 r2的服务器比较卡,打开服务器显示也特别慢,sqlserver业务费正常执行,服务器桌面操作也比较卡,经过多方研究发现原来是sqlserver日志文件已经达到了84G导致,这里就为大家分享一下解决方法,需要的朋友可以参考一下...
-
SQL Server数据库查看login所授予的具体权限问题
在SQL Server数据库中如何查看一个登录名(login)的具体权限呢,下面脚本之家小编给大家带来了SQL Server查看login所授予的具体权限问题,感兴趣的朋友一起看看吧...
-
SQL Server数据库怎么找出一个表包含的页信息(Page)
文章主要给大家介绍了关于SQL Server是如何找出一个表包含的页信息(Page)的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用SQL Server具有一定的参考学习价值,...
-
Windows server 2016服务器上安装oracle数据库的教程图解
文章主要介绍了Windows server 2016 安装oracle的教程图解,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下 1.安装oracle Oracle的安...
-
SQL Server数据库基础之行数据转换为列数据
文章主要给大家介绍了关于SQL Server基础之行数据转换为列数据的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用SQL Server具有一定的参考学习价值,需要的朋友们...
-
SQL server数据库创建代码 filegroup文件组修改的示例代码
文章主要介绍了SQL server数据库创建代码 filegroup文件组修改的实现方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下数据库的操作:1. 对数据文件...
-
SQLServer数据库处于恢复挂起状态的解决办法
文章主要介绍了SQLServer数据库处于恢复挂起状态的解决办法 ,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下.一、总结 如果数据库处...