oracle 分組中排序(rank函數)

來源:互聯網
上載者:User

標籤:指定   指定欄位   編碼   from   mon   run   esc   div   and   

需求:

  查詢每個供應商在每個類型產品銷售的top50中有多少

分析:

  1.查詢,以指定欄位(供應商、產品類型)分組,取每個分組的前50行,查看每個供應商的數量

  2.使用rank函數給每個供應商、每個類型產品的銷售量做個排名,添加偽劣ran

  3.篩選ran小於等於50的行,以供應商、產品類型分組,count

sql:

select gyscode 供應商編碼, typeid 類型id, count(1) num  from (select t.gyscode,                t.typeid,                sum(t.sale) sale,                rank() over(partition by t.gyscode, t.typeid order by sum(b.sale) desc) ran           from t_sale t          where         -- 計算周期:上月1到上月最後一天          t.log_date>= add_months(trunc(sysdate, ‘mm‘), -1)       and t.log_date<= last_day(add_months(trunc(sysdate, ‘mm‘), -1))          group by t.gyscode, t.typeid)
  where ran <= 50 group by gyscode, typeid

 

註:runk函數兩種用法:

  dense_rank:連續排名,如果有兩個供應商的銷售額一樣,排名相同,但是下一個供應商的排名+1

  rank:不連續排名,如果有兩個供應商的銷售額一樣,排名相同,但是下一個供應商的排名+2(2:銷售額相同的供應商數量)

runk函數有兩種排名:

  1.所有結果排名(不加partition,相當於以某個欄位排序後的rownum)

  2.分組排名(加partition)

oracle 分組中排序(rank函數)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.