php聚合查询,聚合查询 · ThinkPHP6.0完全开发手册 · 看云

在应用中我们经常会用到一些统计数据,例如当前所有(或者满足某些条件)的用户数、所有用户的最大积分、用户的平均成绩等等,ThinkPHP为这些统计操作提供了一系列的内置方法,包括:

| 方法 | 说明 |

| --- | --- |

| count | 统计数量,参数是要统计的字段名(可选) |

| max | 获取最大值,参数是要统计的字段名(必须) |

| min | 获取最小值,参数是要统计的字段名(必须) |

| avg | 获取平均值,参数是要统计的字段名(必须) |

| sum | 获取总分,参数是要统计的字段名(必须) |

>[danger] 聚合方法如果没有数据,默认都是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

~~~

如果你要获取的最大值不是一个数值,可以使用第二个参数关闭强制转换

~~~

Db::table('think_user')->max('name',false);

~~~

获取积分大于0的用户的最小积分:

~~~

Db::table('think_user')->where('score', '>', 0)->min('score');

~~~

和max方法一样,min也支持第二个参数用法

~~~

Db::table('think_user')->where('score', '>', 0)->min('name',false);

~~~

获取用户的平均积分:

~~~

Db::table('think_user')->avg('score');

~~~

生成的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

~~~

如果你要使用`group`进行聚合查询,需要自己实现查询,例如:

```

Db::table('score')->field('user_id,SUM(score) AS sum_score')->group('user_id')->select();

```

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值