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

如何在SQL中统计单行内相同值的条目数?

解决SQL单行多列相同值统计问题

你之前的SQL仅针对Day1单一列统计,未覆盖Day2和Day3,因此无法得到单行内三个列中'D'的总数。要实现需求,需将三个列的判断结果累加,具体方法如下:

方法1:SUM+CASE逐列判断累加

把每个列中等于'D'的情况转为1,否则为0,再将三个列的结果相加,最终得到每个Name对应的'D'总数:

SELECT 
  Name,
  SUM(
    CASE WHEN Day1 = 'D' THEN 1 ELSE 0 END +
    CASE WHEN Day2 = 'D' THEN 1 ELSE 0 END +
    CASE WHEN Day3 = 'D' THEN 1 ELSE 0 END
  ) AS D_Count
FROM MyTable
WHERE Name = 'Name1' -- 仅统计Name1可保留此条件,统计所有Name则删除
GROUP BY Name;

方法2:COUNT+CASE逐列统计后相加

利用COUNT忽略NULL的特性,每个列符合条件时返回1(非空值),否则返回NULL,再将三个列的统计结果相加:

SELECT 
  Name,
  COUNT(CASE WHEN Day1 = 'D' THEN 1 END) +
  COUNT(CASE WHEN Day2 = 'D' THEN 1 END) +
  COUNT(CASE WHEN Day3 = 'D' THEN 1 END) AS D_Count
FROM MyTable
WHERE Name = 'Name1'
GROUP BY Name;

原SQL问题说明

  • 示例SQL1:仅统计Day1列等于'D'的行数,而非单行内多列的'D'数量,结果是所有行中Day1为'D'的总数,不是单个Name的多列总和。
  • 示例SQL2:同样只针对Day1列统计,未涉及Day2和Day3,自然无法得到正确的单行多列统计结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 11:35:08