sql - 零 value 合并函数有什么作用?

我一直在探索 dbt 工具,并且遇到了以下代码片段:

coalesce(customer_orders.number_of_orders, 0) as number_of_orders

我知道合并函数用于返回列表中的第一个非空 value 。我不明白的是第二个参数中的零是什么意思?

回答1

https://www.w3schools.com/sql/func_mysql_coalesce.asp 函数返回列表中的第一个非空 value。 COALESCE 可以接受 n 个参数。

COALESCE(val1, val2, ...., val_n)

所以根据查询:

coalesce(customer_orders.number_of_orders, 0) as number_of_orders

如果 customer_orders.number_of_ordersNULL,则在 number_of_orders 中返回的结果将为 0。

回答2

COALESCE 可以使用任意数量的参数。在大多数情况下(如您的示例中), COALESCE(some_column,0) 用于防止创建总和或建立平均值不会导致所需的结果。

假设有三列,并且您想对它们求和。如果您不使用 COALESCE,则总和将为 NULL,即使您的三列中只有一列是 NULL。因此,您将使用 COALESCE 并将 NULL values 替换为零,以便接收所有 NOT NULL values 的总和。您可以将 COALESCE “翻译”为 CASE WHEN 构造:

COALESCE(column1,0)

执行以下操作:

CASE WHEN column1 IS NULL THEN 0 ELSE column1 END

COALESCE 的另一个用例是如果 column1 是 NULL,如果 column2 也是 NULL,则将 column1 替换为 column2,以 column3 等为例。我在这里创建了一个示例,因此您可以明白我的意思:https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=ff21b133a3a8c74673044462f7a110df

相似文章

excel - VBA Excel - Offset 合并单元格

是的,你可能会想,他为什么还要使用合并单元格。让我解释:我们以Excel格式接收来自世界各地不同公司的被保险人的保险期限。我必须自动读取这些数据,但我遇到的问题是这些Excel文件包含合并的单元格。这...

随机推荐

最新文章