51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2363|回复: 5
打印 上一主题 下一主题

SqlServer聚合函数的疑问

[复制链接]
  • TA的每日心情
    擦汗
    昨天 09:07
  • 签到天数: 527 天

    连续签到: 4 天

    [LV.9]测试副司令

    跳转到指定楼层
    1#
    发表于 2019-11-27 10:31:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    1测试积点
    SqlServer聚合函数的疑问
    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过滤后不都没有数据吗?

    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

  • TA的每日心情
    擦汗
    2024-9-30 15:02
  • 签到天数: 751 天

    连续签到: 2 天

    [LV.10]测试总司令

    2#
    发表于 2019-11-28 09:17:27 | 只看该作者

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

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 10:10
  • 签到天数: 1516 天

    连续签到: 5 天

    [LV.Master]测试大本营

    3#
    发表于 2019-11-28 11:25:21 | 只看该作者
    查询是空的,就没有返回
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 08:59
  • 签到天数: 1801 天

    连续签到: 5 天

    [LV.Master]测试大本营

    4#
    发表于 2019-11-28 11:35:22 | 只看该作者
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 07:28
  • 签到天数: 2812 天

    连续签到: 5 天

    [LV.Master]测试大本营

    5#
    发表于 2019-11-28 12:10:12 | 只看该作者
    参考2楼的解答
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 09:46
  • 签到天数: 991 天

    连续签到: 5 天

    [LV.10]测试总司令

    6#
    发表于 2019-11-28 12:55:49 | 只看该作者
    同时使用where 和group by 进行汇总处理时,会先根据 WHERE 子句指定的条件进行过滤,然后再进行汇总处理。
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-16 09:27 , Processed in 0.064684 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表