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

  • 相关阅读:
    配置本地光盘为yum源
    几个精彩的DMV
    单用户模式下连接被占用定位spid
    SQLServer 使用smb存放数据文件
    安装第三方库出现 Python version 2.7 required, which was not found in the registry
    windows环境下Django安装配置
    复制 replication 新增表 add new article
    SQL Server session故障排查
    倒车入库方法
    侧方停车方法
  • 原文地址:https://www.cnblogs.com/KimhillZhang/p/3035031.html
Copyright © 2011-2022 走看看