集計クエリ (クエリ ビルダー 7)


アプリケーションでは、現在のユーザー (または特定の条件を満たすユーザー) の数、全ユーザーの最大ポイント、ユーザーの平均スコアなどの統計データを使用することがよくあります。 ThinkPHP は、これらの統計演算により、次のような一連の組み込みメソッドが提供されます。

MethodDescription
count数値をカウントします。パラメータはカウントするフィールド名です (オプション)
max最大値を取得します。パラメータはカウントするフィールド名です (必須)
min 最小値を取得します。パラメータはカウントするフィールド名ですカウントされる (必須)
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

取得したい最大値が数値ではない場合は、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();