gpt4 book ai didi

sql - 为什么我的 SQL SUM 在包含 NULL 值时不返回 NULL?

转载 作者:行者123 更新时间:2023-12-04 14:09:26 26 4
gpt4 key购买 nike

我使用 CTE 来计算日志中的时间跨度,如本 fiddle 所示:

http://www.sqlfiddle.com/#!3/b99448/6

请注意,其中一行有一个 NULL 值,因为这是最近的日志条目,无法进行计算。

但是,如果我SUM 这些结果,NULL 将被视为零:

http://www.sqlfiddle.com/#!3/b99448/4

我怎样才能让它停止忽略 NULL 值?我希望总和为 NULL,因为它添加了一个 NULL 值。

最佳答案

聚合函数忽略 NULL 值。它们不被视为 0 - AVG()MIN()MAX() 的区别更为重要。因此,SUM() 仅在所有值为 NULL 时返回 NULL

如果你想返回NULL,这里有一个简单的表达式:

select (case when count(*) = count(a.DateTimeChangedUtc) and
count(*) = count(b.DateTimeChangedUTC)
then SUM(DATEDIFF(SECOND, a.DateTimeChangedUtc, b.DateTimeChangedUTC))
end) AS TimeSpentSeconds

如果任一参数为 NULL,则返回 NULL

关于sql - 为什么我的 SQL SUM 在包含 NULL 值时不返回 NULL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32637010/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com