zoukankan      html  css  js  c++  java
  • oracle partition by 与 partition by ... order by 分组

    partition by

    partition by ... order by

    用法区别,刚使用到,迷迷糊糊的

    如:表t

      A                B                C                

     1                 43              2013-4-17

     2                 33              2013-4-18

     3                 10              2013-4-17

    使用

    partition by:

    在使用rank()时,需要使用order by

    Select  rank() over(partition by C  order by B desc) as rank,C, B,A  from t

    这样结果是:

    rank        C                 B               A                           

    1          2013-4-17     43               1

    2          2013-4-17     10               3

    1          2013-4-18     33               2

    对它进行了分级显示,同一日期的则根据order by 的排序方法以一个等级往上升

    现在如果我现在要查询每一天当中最B列值最大的,那么:

    Select   * from

    (

    Select  rank() over(partition by C  order by B desc) as rank,

    C, B,A  from t

    )  table

    where table.rank = 1

    那么这样子就查询出每一天最高的一条记录

    rank        C                 B               A                          

    1          2013-4-17     43               1

    1          2013-4-18     33               2

    现在使用sum()或count()这些函数进行使用

    如:查询每一天的B列的总和

    select sum(B) over(partition by C order by C ASC) as sum,

    C, B,A  from t

    如果这里还加上order by ,则表示累计这个时间以上的数据,那么这里就会出现

    sum           C              B               A

    1          2013-4-17     43               1

    53          2013-4-17    10              3

    33          2013-4-18     33               2

    如果不加order by ,即:

    select sum(B) over(partition by C) as sum,

    C, B  from t

    则不会累计之前的,只要显示最后的数据,但是多条的;

    sum           C              B               A

    53         2013-4-17     43              1

    53          2013-4-17    10              3

    33          2013-4-18     33               2

    这样子,如果求每天总和,即

    select sum,C from

    (

    select sum(B) over(partition by C) as sum,

    C, B  from t

    ) tt

    group by sum, B,C

    这样就可以得到

    sum           C            

    53         2013-4-17   

    33          2013-4-18

  • 相关阅读:
    C#操作json
    sql server 2008 身份验证失败 18456
    MD5密码加密
    oracle dg 报错提示 涉及硬盘错误
    Rhel6.5 相关操作
    Centos6.9部署vnc
    Sqluldr2 libclntsh.so报错处理
    时钟服务器同步方法
    windows copy 和xcopy
    Linux 本地repo配置
  • 原文地址:https://www.cnblogs.com/KimhillZhang/p/3035031.html
Copyright © 2011-2022 走看看