如何计算列中 SQL NULL 和 NOT NULL 值的数量

SQL 中 NULL 值的解析与计数方法

在 SQL 世界中,处理 NULL 值是数据分析师和数据库专业人员经常遇到的挑战。NULL 的特殊之处在于,它们的存在可能会让人感到困惑和不知所措,从而影响数据分析的流畅性。

然而,理解 NULL 值的含义以及它们对获得准确、全面的数据洞察的重要性至关重要。本文将深入探讨 SQL 命令,以及如何利用这些命令来统计 NULL 值和非 NULL 值。

什么是 SQL NULL 值?

NULL 值表示“没有值”,它不等同于零或空字符串。

因此,我们不能直接使用传统的比较运算符(如 =、<、> 和 <>)来操作 NULL 值。如果使用,结果将会是“未知”。

可以把 NULL 值看作是在创建记录时被特意留空的字段。例如,你创建一个表并添加新列,但暂时不为这些列赋予具体值,那么这些列默认就包含 NULL 值。 NULL 值可以被插入到任何数据类型的列中。

为了演示,我们可以使用以下 SQL 语法创建一个新的表:

CREATE TABLE Employee (
  FirstName VARCHAR(50),
  LastName VARCHAR(50),
  PhoneNum VARCHAR(15),
  Salary FLOAT
);

INSERT INTO Employee (FirstName, LastName, PhoneNum, Salary)
VALUES
  ('Maxwell', 'Ayomide', '812-345-6789', 150000.00),
  ('David', 'Tosin', NULL, 450000.00),
  ('Eben', 'Teniola', '912-345-6789', 590000.00),
  ('Kenneth', 'Olisa', '809-456-8732', NULL),
  ('Esther', 'Oge', NULL, NULL);

你还可以使用 SQL 的 UPDATE 语句来更新表中的 NULL 值。以下是使用方法:

UPDATE Employee
SET FirstName="Esther"
WHERE Salary = 200000;

要查看更新后的结果,请执行:

SELECT * FROM Employee;

SQL 中 NULL 值的应用场景

NULL 值在 SQL 中有多种应用场景:

  • 当数据在输入时不可用或未知时。
  • 当数据不适用于特定实体时。例如,在调查问卷中,问题“是否有孩子”可能会出现 NULL 值。

SQL IS NULL 条件的作用

SQL 的 IS NULL 命令是每一个程序员都应该掌握的重要命令。它用于测试 NULL 值,特别适用于查找 NULL 值。这个命令会返回指定列中所有包含 NULL 值的行。

SELECT FirstName, LastName, PhoneNum
FROM Employee
WHERE PhoneNum IS NULL;

上述查询将返回 PhoneNum 列中所有值为 NULL 的行。

SQL IS NOT NULL 条件的作用

SQL 的 IS NOT NULL 命令与 IS NULL 命令相反。

此命令用于测试非 NULL 值。它会返回指定列中所有包含非 NULL 值的行,并排除 NULL 值。

SELECT FirstName, LastName, PhoneNum
FROM Employee
WHERE PhoneNum IS NOT NULL;

上述查询会返回 PhoneNum 列中所有不为 NULL 的行。

如何计算列中的 SQL NULL 值?

COUNT() 命令用于统计数量。在分析 SQL 表格中的数据以及使用子查询和临时表时,此命令非常有用。

以下查询可以计算 PhoneNum 列中 NULL 值的数量:

SELECT COUNT(*) AS [Total Number of NULL]
FROM Employee
WHERE PhoneNum IS NULL

执行后将返回:

如何计算列中的非 NULL 值?

使用 NOT NULL 命令可以计算 PhoneNum 列中非 NULL 值的数量。

SELECT COUNT(PhoneNum) AS [Total Number of Non-NULL Values]
FROM Employee
WHERE PhoneNum IS NOT NULL

这将返回:

你也可以使用此查询将结果存储到一个新表中:

SELECT SUM(CASE WHEN PhoneNum is null THEN 1 ELSE 0 END)
AS [Number Of Null Values],
COUNT(PhoneNum) AS [Number Of Non-Null Values]
FROM Employee

在这个查询中,CASE 和 IS NULL 命令配合使用,将 PhoneNum 列中的 NULL 值标记为 1。然后,将所有标记为 1 的值相加,结果保存在新创建的 Number Of Null Values 列中。

计数 NULL 值并继续分析

NULL 值起初可能会让人感到棘手,但实际上它们并不难处理。通过使用 COUNT() 函数,只需几行 SQL 代码,就可以轻松地统计 NULL 和非 NULL 值。

一旦你掌握了这些 SQL 命令,就可以将其应用于各种场景,并轻松地进行数据分析。