集計クエリ (クエリ ビルダー 7)
アプリケーションでは、現在のユーザー (または特定の条件を満たすユーザー) の数、全ユーザーの最大ポイント、ユーザーの平均スコアなどの統計データを使用することがよくあります。 ThinkPHP は、これらの統計演算により、次のような一連の組み込みメソッドが提供されます。
Method | Description |
---|---|
count | 数値をカウントします。パラメータはカウントするフィールド名です (オプション) |
max | 最大値を取得します。パラメータはカウントするフィールド名です (必須) |
min | 最小値を取得します。パラメータはカウントするフィールド名ですカウントされる (必須) |
avg | 平均値を取得します。パラメータはカウントされるフィールド名です (必須) |
sum | 合計スコアを取得します。パラメータはカウントするフィールドの名前です (必須) |
使用例
ユーザー数の取得:
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
取得したい最大値が数値ではない場合は、2 番目のパラメータで強制変換をオフにします。
Db::table('think_user')->max('name',false);
最小値を取得します。ポイントが 0 より大きいユーザーのポイント:
Db::table('think_user')->where('score', '>', 0)->min('score');
max メソッドと同様に、min も 2 番目のパラメーターの使用法をサポートします。
Db::table('think_user')->where('score', '>', 0)->min('name',false);
ユーザーの平均スコアを取得します:
Db::table('think_user')->avg('score');
The生成された 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
集計クエリにグループを使用する場合は、クエリを自分で実装する必要があります。例:
Db::table('score')->field('user_id,SUM(score) AS sum_score')->group('user_id')->select();