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;

posted @ 2019-05-19 11:59  LOVE_FOEEVER_MAO  阅读(121)  评论(0编辑  收藏  举报