mysql實現(xiàn)多表關(guān)聯(lián)統(tǒng)計(子查詢統(tǒng)計)示例
本文實例講述了mysql實現(xiàn)多表關(guān)聯(lián)統(tǒng)計的方法。分享給大家供大家參考,具體如下:
需求:
統(tǒng)計每本書打賞金額,不同時間的充值數(shù)據(jù)統(tǒng)計,消費統(tǒng)計,
設(shè)計四個表,book 書本表,orders 訂單表 reward_log打賞表 consume_log 消費表 ,通過book_id與book表關(guān)聯(lián),
問題:
當(dāng)關(guān)聯(lián)超過兩張表時導(dǎo)致統(tǒng)計時數(shù)據(jù)重復(fù),只好用子查詢查出來,子查詢只能查一個字段,這里用CONCAT_WS函數(shù)將多個字段其拼接
實現(xiàn):
查詢代碼如下
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
查詢結(jié)果
score 為三個消費數(shù),以逗號隔開
性能分析
更多關(guān)于MySQL相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《MySQL查詢技巧大全》、《MySQL常用函數(shù)大匯總》、《MySQL日志操作技巧大全》、《MySQL事務(wù)操作技巧匯總》、《MySQL存儲過程技巧大全》及《MySQL數(shù)據(jù)庫鎖相關(guān)技巧匯總》
希望本文所述對大家MySQL數(shù)據(jù)庫計有所幫助。
- mysql多表聯(lián)合查詢返回一張表的內(nèi)容實現(xiàn)代碼
- MySQL左聯(lián)多表查詢where條件寫法示例
- 詳解Mysql多表聯(lián)合查詢效率分析及優(yōu)化
- 淺談mysql中多表不關(guān)聯(lián)查詢的實現(xiàn)方法
- mysql多表聯(lián)合查詢操作實例分析
- MySQL 多表關(guān)聯(lián)一對多查詢實現(xiàn)取最新一條數(shù)據(jù)的方法示例
- SQL語句多表聯(lián)查的實現(xiàn)方法示例
- MySQL詳細(xì)講解多表關(guān)聯(lián)查詢
- SQL?多表聯(lián)合查詢的幾種方式詳解
- SQL多表聯(lián)查的幾種方法示例總結(jié)
相關(guān)文章
SELinux導(dǎo)致PHP連接MySQL異常Can''t connect to MySQL server的解決方法
這篇文章主要介紹了SELinux導(dǎo)致PHP連接MySQL異常Can't connect to MySQL server的解決方法,有2種,一是設(shè)置允許,二是關(guān)閉SELinux,需要的朋友可以參考下2014-07-07mysql中l(wèi)ower_case_table_names=1參數(shù)的作用
lower_case_table_names是MySQL數(shù)據(jù)庫中的一個系統(tǒng)變量,本文主要介紹了mysql中l(wèi)ower_case_table_names=1參數(shù)的作用,具有一定的參考價值,感興趣的可以了解一下2024-08-08MySQL中修改表結(jié)構(gòu)時需要注意的一些地方
這篇文章主要介紹了MySQL中修改表結(jié)構(gòu)時需要注意的一些地方,作者援引Percona的相關(guān)的說明來講述如何避免相關(guān)操作導(dǎo)致表無法使用的問題,一些需要的朋友可以參考下2015-06-06Mysql數(shù)據(jù)庫慢查詢常用優(yōu)化方式
數(shù)據(jù)庫SQL優(yōu)化是老生常談的問題,下面這篇文章主要給大家介紹了關(guān)于Mysql數(shù)據(jù)庫慢查詢常用優(yōu)化方式,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-05-05mysql數(shù)據(jù)庫id主鍵自增加刪除后不連續(xù)如何解決
這篇文章主要介紹了mysql數(shù)據(jù)庫id主鍵自增加刪除后不連續(xù)的解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-03-03