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數據庫如何保證事務特性示例詳解
- 數據庫 MySQL8.0+常用命令及操作命令詳解
- Mysql8.0.17數據庫安裝圖文教程
- SQL Server 2000/2005/2008刪除或壓縮數據庫日志的方
- SQL Server數據庫查看login所授予的具體權限問題
- SQL Server數據庫怎么找出一個表包含的頁信息(Page)
- Windows server 2016服務器上安裝oracle數據庫的教程
- SQL Server數據庫基礎之行數據轉換為列數據
- SQL server數據庫創(chuàng)建代碼 filegroup文件組修改的示例
- SQLServer數據庫處于恢復掛起狀態(tài)的解決辦法
  - 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業(yè)務費正常執(zhí)行,服務器桌面操作也比較卡,經過多方研究發(fā)現原來是sqlserver日志文件已經達到了84G導致,這里就為大家分享一下解決方法,需要的朋友可以參考一下... 
  - SQL Server數據庫查看login所授予的具體權限問題- 在SQL Server數據庫中如何查看一個登錄名(login)的具體權限呢,下面腳本之家小編給大家?guī)砹薙QL 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數據庫創(chuàng)建代碼 filegroup文件組修改的示例代碼- 文章主要介紹了SQL server數據庫創(chuàng)建代碼 filegroup文件組修改的實現方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下數據庫的操作:1. 對數據文件... 
  - SQLServer數據庫處于恢復掛起狀態(tài)的解決辦法- 文章主要介紹了SQLServer數據庫處于恢復掛起狀態(tài)的解決辦法 ,本文圖文并茂給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下.一、總結 如果數據庫處... 

