聚合查詢(查詢建構器7)


在應用程式中我們經常會用到一些統計數據,例如目前所有(或滿足某些條件)的使用者數、所有使用者的最大積分、使用者的平均成績等等,ThinkPHP為這些統計操作提供了一系列內建的方法,包括:

##說明##取得最大值,參數是要統計的欄位名稱(必須)min
方法
##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();
### ####