ThinkPHP 統計查詢
阿新 • • 發佈:2019-01-28
統計查詢
在應用中我們經常會用到一些統計資料,例如當前所有(或者滿足某些條件)的使用者數、所有使用者的最大積分、學生的平均成績等等,ThinkPHP 為這些統計操作提供了一系列的內建方法:
-
count():統計資料行數
-
max():統計某個欄位最大資料
-
min():統計某個欄位最小資料
-
avg():統計某個欄位平均資料
-
sum():統計某個欄位資料之和
上述統計查詢方法都是獨立的方法且支援連貫操作。
count()count() 方法用於統計資料行數。
例子:
public function read(){ $Dao = M('User'); // 獲取使用者數: $userCount = $Dao->count(); // 新增條件: $userCount2 = $Dao->where('uid > 10')->count(); $this->assign('userCount', $userCount); $this->display(); }
上例中,兩個查詢語句實際執行的 SQL 為:
SELECT COUNT(*) AS tp_count FROM user LIMIT 1 SELECT COUNT(*) AS tp_count FROM user WHERE uid > 10 LIMIT 1
可以在模板中直接輸出得到的統計資料:
共有使用者 {$userCount} 人。max()
max() 方法用於統計某個欄位最大資料。
統計使用者最大積分例子:
$maxScore = $Dao->max('score');
實際執行的 SQL 為:
SELECT MAX(score) AS tp_max FROM user LIMIT 1
min() 統計某個欄位最小資料。
獲取積分大於 0 的使用者的最小積分例子:
$minScore = $Dao->where('score>0')->min('score');
實際執行的 SQL 為:
實際執行SQL:SELECT MIN(score) AS tp_min FROM user WHERE score>0 LIMIT 1avg()
avg() 統計某個欄位平均資料。
獲取使用者的平均積分例子:
$avgScore = $Dao->avg('score');
實際執行的 SQL 為:
SELECT AVG(score) AS tp_avg FROM user LIMIT 1
sum() 統計某個欄位資料之和。
統計積分排名前 10 名使用者的積分之和:
$sumScore = $Dao->order('score DESC')->limit('10')->avg('score');
實際執行的 SQL 為:
SELECT SUM(score) AS tp_sum FROM user ORDER BY score DESC LIMIT 1
所有的統計查詢如 select() 方法一樣。均支援連貫操作的使用,根據實際情況新增不同的查詢條件。
原文地址:http://hi.baidu.com/tangzhen123456/item/d17a4102580eb6e5905718a3