oracle partition by 與 partition by … order by 分組

來源:互聯網
上載者:User

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.