当前位置: 首页 > 面试题库 >

计算SQL中每列中NULL值的数量

严玉泽
2023-03-14
问题内容

我正在尝试编写一个脚本,该脚本将显示每列中非空值的数量以及表中的总行数。

我发现了几种方法可以做到这一点:

SELECT sum(case my_column when null then 1 else 0) "Null Values",
   sum(case my_column when null then 0 else 1) "Non-Null Values"
FROM my_table;

SELECT count(*) FROM my_table WHERE my_column IS NULL 
UNION ALL
SELECT count(*) FROM my_table WHERE my_column IS NOT NULL

但是这些要求我手动输入每个列名称。有没有一种方法可以对每个列执行此操作而不列出它们?


问题答案:

正如Paolo所说,但这是一个示例:

DECLARE @TableName VARCHAR(512) = 'invoiceTbl';
DECLARE @SQL VARCHAR(1024);
WITH SQLText AS (
    SELECT 
        ROW_NUMBER() OVER (ORDER BY c.Name) AS RowNum,
        'SELECT ''' + c.name + ''', SUM(CASE WHEN ' + c.Name + ' IS NULL THEN 1 ELSE 0 END) AS NullValues FROM ' + @TableName AS SQLRow
    FROM 
        sys.tables t 
        INNER JOIN sys.columns c ON c.object_id = t.object_id
    WHERE 
        t.name = @TableName),
Recur AS (
    SELECT
        RowNum,
        CONVERT(VARCHAR(MAX), SQLRow) AS SQLRow
    FROM
        SQLText
    WHERE
        RowNum = 1
    UNION ALL
    SELECT
        t.RowNum,
        CONVERT(VARCHAR(MAX), r.SQLRow + ' UNION ALL ' + t.SQLRow)
    FROM
        SQLText t
        INNER JOIN Recur r ON t.RowNum = r.RowNum + 1
    )
SELECT @SQL = SQLRow FROM Recur WHERE RowNum = (SELECT MAX(RowNum) FROM Recur);
EXEC(@SQL);


 类似资料:
  • 问题内容: 所以我查了一下,这个问题非常相似,但是它缺少一个关键点:SQL Server计算表的每一列中不同值的数量 因此,在这个问题中,他们希望每列的计数都不同。我想要做的是获取表中每个列的每个不同值的计数(而我正在为特定数据库中的所有表执行此操作,这就是为什么我要尝试尽可能地自动化这一点的原因尽可能)。当前,我的代码看起来像这样,我必须为每一列运行: 理想情况下,我的输出应如下所示: 以此类推

  • 问题内容: 我正在尝试从DataFrame计算列中每个值的百分位数。 有没有更好的方法来编写以下代码? 我希望看到更好的性能。 问题答案: 似乎您想要: 性能:

  • 问题内容: 我有3列让说,和。我需要计算每列中的值。 例如: 应该输出: 我已经尝试了数,总和,子查询,但是还没有任何工作适合我。任何输入将不胜感激! 问题答案:

  • 有没有办法用熊猫来计算某个值在每一列中出现的次数? 数据= pd。DataFrame({'userID':['Luis ',' Mike ',' Harvey'],' category1':[True,False,True],' category2': [True,True,False],' category3':[False,False,False]}) 假设我想计算每个类别中“真”布尔值的数量

  • 我有一张类似“ 我想创建一个新的列,在那里它将计数在最后4列中有值的列数。 我如何在Python中做到这一点? 提前道谢。

  • 问题内容: 我有一个名为“ posts”的SQL表,如下所示: 每个类别编号对应一个类别。我将如何计算每个类别在 一个sql查询中 全部出现在帖子中的次数? 例如,这样的查询可能返回如下符号数组: 我当前的方法是对每个可能的类别使用查询,例如:,然后将返回值组合到最终数组中。但是,我正在寻找一种仅使用一个查询的解决方案。 问题答案: