create table B
(
店鋪 VARCHAR2(100),
銷售數量 VARCHAR2(100),
價格 VARCHAR2(100),
日期 DATE
)
tablespace USERS
/
insert into B (店鋪, 銷售數量, 價格, 日期)
values ('a', '3', '100', to_date('01-01-2011', 'dd-mm-yyyy'));
insert into B (店鋪, 銷售數量, 價格, 日期)
values ('a', '4', '200', to_date('02-02-2011', 'dd-mm-yyyy'));
insert into B (店鋪, 銷售數量, 價格, 日期)
values ('a', '4', '250', to_date('03-03-2011', 'dd-mm-yyyy'));
insert into B (店鋪, 銷售數量, 價格, 日期)
values ('b', '10', '120', to_date('05-05-2011', 'dd-mm-yyyy'));
insert into B (店鋪, 銷售數量, 價格, 日期)
values ('c', '5', '130', to_date('06-06-2011', 'dd-mm-yyyy'));
commit;
現在我們需要根據店鋪進行分組,按照銷售數量進行排名:
1.select b.*,row_number() over(partition by 店鋪 order by to_number(銷售數量) desc ) rn from b
ROW_NUMBER():為每一條分組紀錄返回一個數字
2.select b.*,rank() over(partition by 店鋪 order by to_number(銷售數量) desc ) rn from b
RANK():返回資料項目在分組中的排名。特點:在排名相等的情況下會在名次中留下空位
3.select b.*,dense_rank() over(partition by 店鋪 order by to_number(銷售數量) desc ) rn from b
DENSE_RANK():與RANK不同的是它在排名相等的情況下不會在名次中留下空位