【问题标题】:SUM(0) function OracleSUM(0) 函数甲骨文
【发布时间】:2018-10-10 20:02:54
【问题描述】:

您好,我正在调整某人以

开头的查询
select 
SUM(0) as A_CT,
..
..

我不明白SUM(0) 会在这里做什么。有人可以提供使用 SUM(0) 背后的含义吗?

【问题讨论】:

  • 不知道......也许有了更多的上下文,它会变得更清晰一些。在任何情况下:总和将为 0,除非它所属的查询不返回任何行,在这种情况下,总和将为 NULL。一种检查查询是否返回任何行的愚蠢方法(请原谅我的法语),也许?
  • 它只产生一个零。也许那个人需要在该列上设置一个零,以使应用程序的其余部分按预期工作。谁知道...
  • 只是猜测-也许他们的意思是SUM(1)?与COUNT(*) 相同,只是当行数为0 时它会生成NULL 而不是0

标签: sql oracle select sum


【解决方案1】:

唯一可以想到的用途是在“联合全部”查询中作为一个块中的占位符,从需要强制转换为相同“形状”以进一步添加的两组不同数据中进行选择。类似:

select sum (a_ct) as a_ct, sum (x_sum) as x_sum from 
(
select sum (0) as a_ct, sum (x_col) as x_sum from x
union all
select sum (y) as a_ct, sum (0) as y_sum from y
) 

但即便如此,人们仍会期望它被表示为 0 而不是 sum (0)。

【讨论】:

  • 或者甚至为NULL,如果目的是不改变SUM(y)(用你的符号)。这样,如果所有“y”都为 NULL,则总和在整个查询中仍然为 NULL。
  • @mathguy - 是的,你完全正确。仍然看不出为什么有人会这样的查询!
  • 是的,彼得勋爵,您是对的,感谢您通过简短的描述理解这个问题。
  • 仅供参考 - 这是一个 8 页的查询,带有“UNION ALL”逻辑,所以我不能在这里复制,彼得斯勋爵的解释是有道理的。
猜你喜欢
  • 1970-01-01
  • 2013-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-15
  • 2010-10-18
相关资源
最近更新 更多