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