1. 程式人生 > >oracle 分析函數2

oracle 分析函數2

rom () from des row tom bold tmp pan

(Rank, Dense_rank, row_number)

①ROW_NUMBER:12345
Row_number函數返回一個唯一的值,當碰到相同數據時,排名按照記錄集中記錄的順序依次遞增。 
②DENSE_RANK:12223
Dense_rank函數返回一個唯一的值,除非當碰到相同數據時,此時所有相同數據的排名都是一樣的。 
③RANK:12225
Rank函數返回一個唯一的值,除非遇到相同的數據時,此時所有相同數據的排名是一樣的,
同時會在最後一條相同記錄和下一條不同記錄的排名之間空出排名。

-- ①對所有客戶按訂單總額進行排名
-- ②按區域和客戶訂單總額進行排名
-- ③找出訂單總額排名前13位的客戶
-- ④找出訂單總額最高、最低的客戶 -- ⑤找出訂單總額排名前25%的客戶 -- 篩選排名前12位的客戶, table : user_order -- 1.對所有客戶按訂單總額進行排名, 使用rownum , rownum = 13,14 的數據跟 12 的數據一樣, 但是被漏掉了 select rownum, tmptb.* from (select * from user_order order by CUSTOMER_sales desc) tmptb where rownum <= 12; -- 2.按區域和客戶訂單總額進行排名 Rank, Dense_rank, row_number
select region_id, customer_id, sum(customer_sales) total, rank() over(partition by region_id order by sum(customer_sales) desc) rank, dense_rank() over(partition by region_id order by sum(customer_sales) desc) dense_rank, row_number() over(partition by region_id order by sum(customer_sales) desc) row_number
from user_order group by region_id, customer_id;

oracle 分析函數2