聚合查询
在应用中经常会用到一些统计数据,例如当前所有(或者满足某些条件)的用户数、所有用户的最大积分、用户的平均成绩等等,ThinkPHP为这些统计操作提供了一系列的内置方法,包括:
方法 | 说明 |
---|---|
count | 统计数量,参数是要统计的字段名(可选) |
max | 获取最大值,参数是要统计的字段名(必须) |
min | 获取最小值,参数是要统计的字段名(必须) |
avg | 获取平均值,参数是要统计的字段名(必须) |
sum | 获取总分,参数是要统计的字段名(必须) |
聚合方法如果没有数据,默认都是0,聚合查询都可以配合其它查询条件,用法示例如下:
1、获取用户数:
Db::name('Admin')->count();
2、或者根据字段统计:
Db::name('Admin')->count('id');
3、获取用户的最大积分:
Db::name('Admin')->max('score');
4、如果要获取的最大值不是一个数值,可以使用第二个参数关闭强制转换
Db::name('Admin')->max('name',false);
5、获取积分大于0的用户的最小积分:
Db::name('Admin')->where('score', '>', 0)->min('score');
和max方法一样,min也支持第二个参数用法。
Db::name('Admin')->where('score', '>', 0)->min('name',false);
6、获取用户的平均积分:
Db::name('Admin')->avg('score');
7、统计某用户的总成绩:
Db::name('Admin')->where('id',10)->sum('score');
8、如果要使用group
进行聚合查询,需要自己实现查询,例如:
Db::name('Score')->field('user_id,SUM(score) AS sum_score')->group('user_id')->select();