COMPUTE [BY]子句的使用

    COMPUTE [BY] 子句用SELECT查询中,查看结果明细,也可查看汇总信息

 

    COMPUTE 所生成的汇总值在查询结果中显示为单独的结果集。当 COMPUTE 带有可选的 BY 子句时,符合 SELECT 条件的每个组都有两个结果集:

  • 每个组的第一个结果集是明细行集,其中包含该组的选择列表信息。
  • 每个组的第二个结果集有一行,其中包含该组的 COMPUTE 子句中所指定的聚合函数的小计。

    当 COMPUTE 不带可选的 BY 子句时,SELECT 语句有两个结果集:

  • 每个组的第一个结果集是包含选择列表信息的所有明细行。
  • 第二个结果集有一行,其中包含 COMPUTE 子句中所指定的聚合函数的合计。

例如,Book表中的数据如下:

 

1. 列出计算机类图书的书号、名称及价格,最后求出册数和总价格。

select 书号, 书名, 定价

from Book

where 类别 = '计算机'

compute count(书号), sum(定价)

 

查询结果:

 

 

 

 

2. 列出计算机类图书的书号、名称及价格,并求出各出版社这类书的总价格,最后求出全部册书和总价格。

select 书号, 书名, 定价

from Book

where 类别 = '计算机'

order by 出版社

compute count(书号), sum(定价) by 出版社

compute count(书号), sum(定价)

 

查询结果:

 

COMPUTE 和 GROUP BY 之间的区别汇总如下:

  • GROUP BY 生成单个结果集。每个组都有一个只包含分组依据列和显示该组子聚合的聚合函数的行。选择列表只能包含分组依据列和聚合函数。
  • COMPUTE 生成多个结果集。一种结果集包含每个组的明细行,其中包含选择列表中的表达式。另一种结果集包含组的子聚合,或 SELECT 语句的总聚合。选择列表可包含除分组依据列或聚合函数之外的其他表达式。聚合函数在 COMPUTE 子句中指定,而不是在选择列表中指定。

3. 查找这样的图书类别:要求类别中最高的图书定价不低于全部按类别分组的图书的平均定价的倍。

select 类别

from Book

group by 类别

having MAX(定价) > AVG(定价)*2

 

查询结果

 

 

COMPUTE [BY]子句只限在SQL Server中使用,并且COMPUTE [BY]在新的SQL Server版本中可能不再支持,因此不推荐使用COMPUTE [BY]。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值