首页 >数据库 >mysql教程 >如何通过条件聚合实现 MySQL 中的'SUM IF”和'COUNT IF”功能?

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

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-13 14:32:02432浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn