如何通过条件聚合实现 MySQL 中的'SUM IF”和'COUNT IF”功能?

Mary-Kate Olsen
发布: 2024-11-13 14:32:02
原创
319 人浏览过

How to Achieve 'SUM IF' and 'COUNT IF' Functionality in MySQL with Conditional Aggregation?

MySQL 条件聚合:解锁“SUM IF”和“COUNT IF”功能

在 MySQL 中,执行条件聚合,例如求和或根据具体条件进行计数,可以通过使用CASE语句来实现。这使您可以灵活地将条件应用于聚合操作。

考虑以下场景:您有一个包含“hour”和“kind”列(可以保存值 1、2 或 3)的表。您想要计算行数,计算总小时数,并确定 'kind' 等于 1 的行数。

最初,您可以尝试以下查询:

SELECT count(id), SUM(hour) as totHour, SUM( IF ( kind = 1, 1, 0 ) ) as countKindOne
登录后复制

SELECT count(id), SUM(hour) as totHour, COUNT( IF ( kind = 1 ) ) as countKindOne
登录后复制

但是,这些查询可能会导致错误。要解决此问题,您需要在聚合操作中使用 CASE 语句:

SELECT count(id), 
    SUM(hour) as totHour, 
    SUM(case when kind = 1 then 1 else 0 end) as countKindOne
登录后复制

在此 CASE 语句中,我们指定如果“kind”列中的值为 1,则返回 1,否则返回我们返回 0。这允许我们有条件地计算 'kind' 等于 1 的行。

以上是如何通过条件聚合实现 MySQL 中的'SUM IF”和'COUNT IF”功能?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板