zoukankan      html  css  js  c++  java
  • SqlServer-COMPUTE BY

    转自:https://www.cnblogs.com/oneword/archive/2009/04/28/1445203.html

    COMPUTE BY子句可以通过同一个select语句即查看明细行,又查看汇总行.可以计算子组的汇总值,也可以计算整个结果集的汇总值

    COMPUTE 子句需要以下信息:

    1. 可选的By关键字可按对一列计算指定的行聚合

    2. 行聚合函数:sum,avg,min,max,count

    3. 要对其执行行聚合函数的列

    COMPUTE 所生成的汇总值在查询结果中显示为分离的结果集,包括COMPUTE子句的查询的结果类似于控制中断报表,即汇总值由指定的组控制的报表.可以为各组生成汇总值,也可以对同一组计算多个聚合函数.

    当COMPUTE带有可选的By子句时,符合select条件的每个组都有两个结果集:

    1. 每个组的第一个结果集是明细行集,其中包含该组的选择列表信息

    2. 每个组的第二个结果集有一行,其中包含该组COMPUTE子句中所指定的聚合函数的小记

    示例:

    Sql:

    select sex,sclass,score

    from student

    order by sex

    compute sum(score) by sex

    注意:order by是必须的,并且 compute by后的参数应该在order by后的参数中出现过

    当COMPUTE不带有可选的By子句时,Select有两个结果集:

    1. 每个组的第一个结果集是包含选择列表的所有明细行的信息

    2. 第二个结果集有一行,其中包含COMPUTE子句中所指定的聚合函数的合计

    例如:

    Sql:

    select sex,sclass,score

    from student

    compute sum(score)

    比较compute 和 group by ,区别如下:

    1. group by生成单个结果集,每个组都有一个只包含分组依据列和显示该组子聚合的聚合函数的行,选择列表只能包含分组依据列和聚合函数.

    2. COMPUTE生成多个结果集,一类结果集包含每个组的明细行,其中包含选择列表中的表达式,另一类结果集包含组的子聚合.

    3. 选择列表可包含分组依据列或聚合函数之外的其他表达式;聚合函数在compute 子句中指定,而不是出现在选择列表中.

  • 相关阅读:
    面试题|Docker的优缺点
    【华为出品】物联网全栈开发实战营来啦!送海思双目开发板
    Nginx实战|Nginx健康检查
    Linux中几个正则表达式的用法
    盘点提高国内访问 Github 的速度的 9 种方案
    一行代码如何隐藏 Linux 进程?
    (二)类加载机制与反射:类加载器
    (一)类加载机制与反射:类的加载,连接和初始化
    (八)多线程:线程相关类
    (七)多线程:线程池
  • 原文地址:https://www.cnblogs.com/fengff/p/8287960.html
Copyright © 2011-2022 走看看