1. 程式人生 > >ThinkPHP 統計查詢

ThinkPHP 統計查詢

統計查詢

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

  1. count():統計資料行數

  2. max():統計某個欄位最大資料

  3. min():統計某個欄位最小資料

  4. avg():統計某個欄位平均資料

  5. 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()

min() 統計某個欄位最小資料。

獲取積分大於 0 的使用者的最小積分例子:

$minScore = $Dao->where('score>0')->min('score');

實際執行的 SQL 為:

實際執行SQL:SELECT MIN(score) AS tp_min FROM user WHERE score>0 LIMIT 1
avg()

avg() 統計某個欄位平均資料。

獲取使用者的平均積分例子:

$avgScore = $Dao->avg('score');

實際執行的 SQL 為:

SELECT AVG(score) AS tp_avg FROM user LIMIT 1
sum()

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