You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL如何按ID统计多个指定列中零值的总出现次数

实现ID分组统计多列零值总次数的SQL方案

需求为按ID统计每行hour1、hour2、hour3三个字段中值为0的总出现次数,提供两种通用实现方案:

方案1:全数据库兼容的条件求和写法

该写法不需要行转列逻辑,兼容MySQL、PostgreSQL、SQL Server、Oracle等所有主流数据库:

SELECT 
  ID,
  SUM(
    CASE WHEN hour1 = 0 THEN 1 ELSE 0 END +
    CASE WHEN hour2 = 0 THEN 1 ELSE 0 END +
    CASE WHEN hour3 = 0 THEN 1 ELSE 0 END
  ) AS ZERO_HOURS
FROM 你的表名
GROUP BY ID;

如果使用支持IF函数的数据库(如MySQL),可以简化为更短的写法:

SELECT 
  ID,
  SUM(IF(hour1=0,1,0) + IF(hour2=0,1,0) + IF(hour3=0,1,0)) AS ZERO_HOURS
FROM 你的表名
GROUP BY ID;

方案2:行转列写法(原思路修正版)

适配支持VALUES行构造语法的数据库,修复原有写法的CASE判断缺失、表关联逻辑缺失问题后的代码如下:

SELECT 
  t.ID,
  COUNT(CASE WHEN v.v = 0 THEN 1 END) AS ZERO_HOURS
FROM 你的表名 t
CROSS JOIN LATERAL (VALUES (hour1), (hour2), (hour3)) AS v(v)
GROUP BY t.ID;

两种方案运行后均可得到你期望的输出结果。

内容的提问来源于stack exchange,提问作者feswrytgu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 16:30:05