SQL-计算所有列中出现的次数

SQL-计算所有列中出现的次数,sql,count,Sql,Count,我试图为分析系统创建一些验证例程 我们有很多数据表。如果某个特定的计算,则列的全部或大部分可能为零。实际上,值通常不完全为0,因此多次出现0表示存在潜在问题。我想编写一个查询,计算每列n中0的数量。例如,如果我的数据是: 可乐 可乐 可乐 可乐 可乐 1. 0 23 2. 9 2. 0 54 3. -2 3. 3. 45 4. 3. 4. 0 32 0 1. 5. 0 0 0 9 在此处使用条件聚合: 选择 计数(当col1=0时,则为1结束)为cnt_col1, 计数(col2=0时为1 EN

我试图为分析系统创建一些验证例程

我们有很多数据表。如果某个特定的计算,则列的全部或大部分可能为零。实际上,值通常不完全为0,因此多次出现0表示存在潜在问题。我想编写一个查询,计算每列n中0的数量。例如,如果我的数据是:

可乐 可乐 可乐 可乐 可乐 1. 0 23 2. 9 2. 0 54 3. -2 3. 3. 45 4. 3. 4. 0 32 0 1. 5. 0 0 0 9
在此处使用条件聚合:

选择
计数(当col1=0时,则为1结束)为cnt_col1,
计数(col2=0时为1 END)为cnt_col2,
计数(col3=0时为1结束)为cnt_col3,
计数(col4=0时为1结束)为cnt_col4,
计数(col5=0时为1结束)为cnt_col5
从你的桌子上;
请注意,在支持布尔表达式求和的数据库上,上述内容可以简化为:

选择
求和(col1=0)为cnt_col1,
求和(col2=0)为cnt_col2,
求和(col3=0)为cnt_col3,
求和(col4=0)为cnt_col4,
求和(col5=0)为cnt_col5
从你的桌子上;

在此处使用条件聚合:

选择
计数(当col1=0时,则为1结束)为cnt_col1,
计数(col2=0时为1 END)为cnt_col2,
计数(col3=0时为1结束)为cnt_col3,
计数(col4=0时为1结束)为cnt_col4,
计数(col5=0时为1结束)为cnt_col5
从你的桌子上;
请注意,在支持布尔表达式求和的数据库上,上述内容可以简化为:

选择
求和(col1=0)为cnt_col1,
求和(col2=0)为cnt_col2,
求和(col3=0)为cnt_col3,
求和(col4=0)为cnt_col4,
求和(col5=0)为cnt_col5
从你的桌子上;

我建议使用
其中
条件和条件聚合在聚合前过滤行,如下所示:

SELECT COUNT(CASE WHEN col1 = 0 THEN 1 END) AS col1_0_count,
       COUNT(CASE WHEN col2 = 0 THEN 1 END) AS col2_0_count,
       COUNT(CASE WHEN col3 = 0 THEN 1 END) AS col3_0_count,
       COUNT(CASE WHEN col4 = 0 THEN 1 END) AS col4_0_count,
       COUNT(CASE WHEN col5 = 0 THEN 1 END) AS col5_0_count
  FROM yourTable t
 WHERE 0 IN (col1, col2, col3, col4, col5);

我建议使用
WHERE
condition和conditional aggregation在聚合之前过滤行,如下所示:

SELECT COUNT(CASE WHEN col1 = 0 THEN 1 END) AS col1_0_count,
       COUNT(CASE WHEN col2 = 0 THEN 1 END) AS col2_0_count,
       COUNT(CASE WHEN col3 = 0 THEN 1 END) AS col3_0_count,
       COUNT(CASE WHEN col4 = 0 THEN 1 END) AS col4_0_count,
       COUNT(CASE WHEN col5 = 0 THEN 1 END) AS col5_0_count
  FROM yourTable t
 WHERE 0 IN (col1, col2, col3, col4, col5);

谢谢我正在使用SQLite,第二个对我有用。谢谢!我正在使用SQLite,第二个对我有用。用你正在使用的数据库标记你的问题。用你正在使用的数据库标记你的问题。