在 SQL 中使用不同的条件进行计数

问题描述 投票:0回答:1

希望这个问题有意义。

我有一个表,其中有一个字段有很多填充,很多没有填充。 我正在尝试获取已填充和未填充内容的详细信息(未填充它可能是 Null、-、0 或只是空白)

我整理了代码,可以满足我的需求:

select count(Col_A),
       count(Col_B), 
       count(case when (Col_B = '0' or Col_B is NULL or Col_B = '-' or
                        Col_B = 'NA' or Col_B = '') then 1
                  else null
             end) as Zero_Col_B_Count,

然而,我有一个第 3 列,它是美国每个州的短代码。 我想要做的是从上面的语句中获取输出,但是将上面的语句按状态拆分,我希望返回这样的东西:

显然不只是停在 2!!

我可以围绕这个找到一些想法,例如 case when 或 while 循环,但不确定如何输入我的状态代码列表以迭代任务

sql count
1个回答
0
投票

您似乎想按州列对结果进行分组并获取每个州的计数。您可以在 SQL 查询中使用 GROUP BY 子句来实现这一点。假设您的表结构有 Col_A、Col_B 和 State 列,您可以按如下方式修改查询:

SELECT State,
   COUNT(Col_A) AS Col_A_Count,
   COUNT(Col_B) AS Col_B_Count,
   COUNT(CASE
             WHEN (Col_B = '0' OR Col_B IS NULL OR Col_B = '-' OR Col_B = 'NA' OR Col_B = '') THEN 1
             ELSE NULL
         END) AS Zero_Col_B_Count
FROM your_table_name
GROUP BY State
ORDER BY State;

此查询将按州列对结果进行分组,并计算每个州的计数。 ORDER BY 子句是可选的,但它会按州代码升序对结果进行排序。将 your_table_name 替换为您的表的实际名称。

© www.soinside.com 2019 - 2024. All rights reserved.