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语言中程序的循环控制 大小值的判断及赋值
    python中猜数字小游戏
    R语言中自编函数(例题)
    c语言中continue语句
    c语言中程序的循环控制 变量的非常规变化例题
    python中向列表中添加元素
    mean
    python中原始字符串和长字符串
    ArcInfo 的工作空间和 Coverage
    ArcGIS资料大全
  • 原文地址:https://www.cnblogs.com/KimhillZhang/p/3035031.html
Copyright © 2011-2022 走看看