oracle 分析函数

-- 使用分析函数实现数据行的排位产生新列
select ename,sal,
rank() over(order by sal desc), -- 相同排位相同,后续值跳跃
dense_rank() over(order by sal desc), -- 相同排位相同,后续值连续
row_number() over(order by sal desc)
from emp;

-- 分组进行排位
select ename,sal,deptno,
rank() over(partition by deptno order by sal desc), -- 相同排位相同,后续值跳跃
dense_rank() over(partition by deptno order by sal desc), -- 相同排位相同,后续值连续
row_number() over( partition by deptno order by sal desc)
from emp;

 

 

 

------ 表分区查询-------

1.分区:允许用户将一个表分成多个分区
2.分区优点:
用户可以执行查询,只访问表中的特定分区
将不同的分区存储在不同的磁盘,提高访问性能和安全性
可以独立地备份和恢复每个分区
3.表分区的分类:范围分区、列表分区、散列分区...

示例:
创建学生信息表,按年龄 20、40、60、60->
create table students(
id number(6) primary key,
name varchar2(20),
age number(3),
sex varchar2(4),
birthday date
)
--指定分区
partition by range(age)(
partition p1 values less than(20), --小于20岁
partition p2 values less than(40), --小于20岁
partition p3 values less than(60), --小于20岁
partition p4 values less than(maxvalue) --小于20岁
);

--测试分区
insert into students(id,name,age,sex,birthday)
values(1,'张三',18,'女',sysdate);
insert into students(id,name,age,sex,birthday)
values(2,'李四',56,'女',sysdate);
insert into students(id,name,age,sex,birthday)
values(3,'小王吧',23,'女',sysdate);
insert into students(id,name,age,sex,birthday)
values(4,'老李',53,'男',sysdate);
insert into students(id,name,age,sex,birthday)
values(5,'小李子',90,'女',sysdate);
insert into students(id,name,age,sex,birthday)
values(6,'王子',9,'女',sysdate);
insert into students(id,name,age,sex,birthday)
values(7,'哈儿',32,'男',sysdate);
insert into students(id,name,age,sex,birthday)
values(8,'赵云',57,'女',sysdate);
commit;

-- 通过查询
select * from students partition(p1) where age<19;

转载于:https://www.cnblogs.com/zhouyunchao/p/10888713.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值