oracle 分析函數2
阿新 • • 發佈:2017-08-20
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_numberselect 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_numberfrom user_order group by region_id, customer_id;
oracle 分析函數2