Oracle中rank函数详解
【格式】
格式一:RANK() OVER ( [partition by 分區字段] order by?排序字段 asc/desc)
格式二:DENSE_RANK() OVER ( [partition by 分區字段] order by?排序字段 asc/desc)
【說明】
- rank():表示排序結果不連續;
- dense_rank():表示排序結果連續;
- partition by:表示分區統計,該項為可選項;
- order by:表示按指定字段進行排序。
【創建樣例數據】
?先創建數據表,建表語句如下:
-- Create table
create table T_PRODUT_SALES
(
? product VARCHAR2(20) not null,
? area ? ?VARCHAR2(20) not null,
? sale ? ?NUMBER not null
)
tablespace TEST_SPACE
? pctfree 10
? initrans 1
? maxtrans 255;
-- Add comments to the table?
comment on table T_PRODUT_SALES
? is '產品銷量表-演示用';
-- Add comments to the columns?
comment on column T_PRODUT_SALES.product
? is '產品名稱';
comment on column T_PRODUT_SALES.area
? is '地區';
comment on column T_PRODUT_SALES.sale
? is '銷量';
再往表中插入數據,SQL語句如下:
insert into T_PRODUT_SALES (product, area, sale)
values ('產品1', '地區1', 50);
insert into T_PRODUT_SALES (product, area, sale)
values ('產品1', '地區2', 60);
insert into T_PRODUT_SALES (product, area, sale)
values ('產品1', '地區3', 70);
insert into T_PRODUT_SALES (product, area, sale)
values ('產品2', '地區1', 50);
insert into T_PRODUT_SALES (product, area, sale)
values ('產品2', '地區2', 65);
insert into T_PRODUT_SALES (product, area, sale)
values ('產品2', '地區3', 75);
insert into T_PRODUT_SALES (product, area, sale)
values ('產品3', '地區1', 40);
insert into T_PRODUT_SALES (product, area, sale)
values ('產品3', '地區2', 60);
insert into T_PRODUT_SALES (product, area, sale)
values ('產品3', '地區3', 85);
最后查詢表中數據,返回結果如下:
【樣例展示1】
?sql語句如下:
select product,area,sale,rank() over(order by sale desc) as 排名 from T_PRODUT_SALES
返回結果如下圖:按銷量進行不連續排名。
【樣例展示2】
??sql語句如下:
select product,area,sale,dense_rank() over(order by sale desc) as 排名 from T_PRODUT_SALES
返回結果如下圖:按銷量進行連續排名。
【樣例展示3】
??sql語句如下:
select product,area,sale,rank() over(partition by area order by sale desc) as 排名 from T_PRODUT_SALES
返回結果如下圖:按地區分區進行不連續排名。
【樣例展示4】
??sql語句如下:
?select product,area,sale,dense_rank() over(partition by area order by sale desc) as 排名 from T_PRODUT_SALES
返回結果如下圖:按地區分區進行連續排名。
?
總結
以上是生活随笔為你收集整理的Oracle中rank函数详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 天生量化将才?理工科程序员 做量化投资优
- 下一篇: Docker 安装及镜像加速器配置