首页新闻找找看学习计划

SqlServer聚合函数的疑问

0
悬赏园豆:50 [待解决问题]

create table #Test (id int, price decimal(5,2))

insert into #Test(id, price)
values(1,12.4),(2,10.5)

select sum(price) from #Test with(nolock) where id = 3 --返回null

select sum(price) from #Test with(nolock) where id = 3 group by id --什么也不返回

如上的sql,为什么在分组以后,聚合函数没有任何返回值,而不分组却返回null?经过where过滤后不都没有数据吗?

0==1&1==0的主页 0==1&1==0 | 初学一级 | 园豆:79
提问于:2019-11-08 11:56
< >
分享
所有回答(1)
0

没有group by,相当于是先执行:select * from #Test with(nolock) where id = 3,结果是带列的空数据,实际是一个对象,空对象,然后在执行求和函数,那么用空对象执行求和函数肯定就是null了。
有group by,相当于是先求和,再分组,那么求和后结果是null,你对结果是null的数据分组,结果肯定就是空。

龙行天涯 | 园豆:1830 (小虾三级) | 2019-11-08 14:08

不对吧,不应该是先分组,再按分组的数据执行聚合计算吗?

支持(0) 反对(0) 0==1&1==0 | 园豆:79 (初学一级) | 2019-11-09 11:43
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册