聚合查詢(查詢建構器7)
在應用程式中我們經常會用到一些統計數據,例如目前所有(或滿足某些條件)的使用者數、所有使用者的最大積分、使用者的平均成績等等,ThinkPHP為這些統計操作提供了一系列內建的方法,包括:
方法 | ##說明|
---|---|
##count | 統計數量,參數是要統計的欄位名稱(可選) |
#max | ##取得最大值,參數是要統計的欄位名稱(必須)
#avg取得平均值,參數是要統計的欄位名稱(必須)sum取得總分,參數是要統計的字段名(必須)聚合方法如果沒有數據,預設都是0,聚合查詢都可以配合其它查詢條件
用法範例
取得使用者數:Db::table('think_user')->count();實際產生的SQL語句是:
SELECT COUNT(*) AS tp_count FROM `think_user` LIMIT 1或根據欄位統計:
Db::table('think_user')->count('id');產生的SQL語句是:
SELECT COUNT(id) AS tp_count FROM `think_user` LIMIT 1取得使用者的最大積分:
Db::table('think_user')->max('score');產生的SQL語句是:
SELECT MAX(score) AS tp_max FROM `think_user` LIMIT 1如果你要取得的最大值不是數值,可以使用第二個參數關閉強制轉換###
Db::table('think_user')->max('name',false);###取得積分大於0的使用者的最小積分:###
Db::table('think_user')->where('score', '>', 0)->min('score');###和max方法一樣,min也支援第二個參數用法###
Db::table('think_user')->where('score', '>', 0)->min('name',false);## #取得使用者的平均積分:###
Db::table('think_user')->avg('score');###產生的SQL語句是:###
SELECT AVG(score) AS tp_avg FROM `think_user` LIMIT 1###統計使用者的總成績:###
Db::table('think_user')->where('id',10)->sum('score');###產生的SQL語句是:###
SELECT SUM(score) AS tp_sum FROM `think_user` LIMIT 1###如果你要使用group進行聚合查詢,需要自己實作查詢,例如:###
Db::table('score')->field('user_id,SUM(score) AS sum_score')->group('user_id')->select();### ####