linux中shell变量$#,$@,$0,$1,$2的含义解释
2016-01-03 17:14
579 查看
Rank()使用说明:
a. 函数简介:
返回结果集分区内指定字段的值的排名,指定字段的值的排名是相关行之前的排名加一。
b. 语法:
RANK() OVER([<partiton_by_clause>]<order by clause>)
c. 参数说明:
partition_by_clause 将from子句生成的结果集划分为应用到RANK函数的分区。
Order_by_clause确定将RANK值应用到分区中的行时所使用的顺序。
d. 以下是实例使用:
1. 创建测试表
2. 创建测试记录
3. 分不同情况查询
3.1 查询所有的学生成绩
查询结果:
3.2 查询Oracle科目成绩名次-非连续rank
查询结果:
3.3查询Oracle科目成绩名次-连续dense_rank
查询结果:
3.4 查询各学生各科排名
查询结果:
3.5 查询各科名次(分区)
查询结果:
a. 函数简介:
返回结果集分区内指定字段的值的排名,指定字段的值的排名是相关行之前的排名加一。
b. 语法:
RANK() OVER([<partiton_by_clause>]<order by clause>)
c. 参数说明:
partition_by_clause 将from子句生成的结果集划分为应用到RANK函数的分区。
Order_by_clause确定将RANK值应用到分区中的行时所使用的顺序。
d. 以下是实例使用:
1. 创建测试表
--创建表 -- Create table create table T_SCORE ( AUTOID NUMBER not null, S_ID NUMBER(3), S_NAME CHAR(8) not null, SUB_NAME VARCHAR2(20), SCORE NUMBER(10,2) ); -- Add comments to the table comment on table T_SCORE is '学生成绩表'; -- Add comments to the columns comment on column T_SCORE.AUTOID is '主键ID'; comment on column T_SCORE.S_ID is '学生ID'; comment on column T_SCORE.S_NAME is '学生姓名'; comment on column T_SCORE.SUB_NAME is '科目'; comment on column T_SCORE.SCORE is '成绩';
2. 创建测试记录
insert into t_score (AUTOID, S_ID, S_NAME, SUB_NAME, SCORE) values (8, 1, '张三 ', '语文', 80.00); insert into t_score (AUTOID, S_ID, S_NAME, SUB_NAME, SCORE) values (9, 2, '李四 ', '数学', 80.00); insert into t_score (AUTOID, S_ID, S_NAME, SUB_NAME, SCORE) values (10, 1, '张三 ', '数学', 0.00); insert into t_score (AUTOID, S_ID, S_NAME, SUB_NAME, SCORE) values (11, 2, '李四 ', '语文', 50.00); insert into t_score (AUTOID, S_ID, S_NAME, SUB_NAME, SCORE) values (12, 3, '张三丰 ', '语文', 10.00); insert into t_score (AUTOID, S_ID, S_NAME, SUB_NAME, SCORE) values (13, 3, '张三丰 ', '数学', null); insert into t_score (AUTOID, S_ID, S_NAME, SUB_NAME, SCORE) values (14, 3, '张三丰 ', '体育', 120.00); insert into t_score (AUTOID, S_ID, S_NAME, SUB_NAME, SCORE) values (15, 4, '杨过 ', 'JAVA', 90.00); insert into t_score (AUTOID, S_ID, S_NAME, SUB_NAME, SCORE) values (16, 5, 'mike ', 'c++', 80.00); insert into t_score (AUTOID, S_ID, S_NAME, SUB_NAME, SCORE) values (3, 3, '张三丰 ', 'Oracle', 0.00); insert into t_score (AUTOID, S_ID, S_NAME, SUB_NAME, SCORE) values (4, 4, '杨过 ', 'Oracle', 77.00); insert into t_score (AUTOID, S_ID, S_NAME, SUB_NAME, SCORE) values (17, 2, '李四 ', 'Oracle', 77.00);
3. 分不同情况查询
3.1 查询所有的学生成绩
--1.查询所有的学生成绩 select t.s_id 学号, t.s_name 姓名, t.sub_name 科目, t.score 成绩 from t_score t;
查询结果:
学号 | 姓名 | 科目 | 成绩 |
1 | 张三 | 语文 | 80.00 |
2 | 李四 | 数学 | 80.00 |
1 | 张三 | 数学 | 0.00 |
2 | 李四 | 语文 | 50.00 |
3 | 张三丰 | 语文 | 10.00 |
3 | 张三丰 | 数学 | |
3 | 张三丰 | 体育 | 120.00 |
4 | 杨过 | JAVA | 90.00 |
5 | mike | c++ | 80.00 |
3 | 张三丰 | Oracle | 0.00 |
4 | 杨过 | Oracle | 77.00 |
2 | 李四 | Oracle | 77.00 |
3.2 查询Oracle科目成绩名次-非连续rank
--2.查询Oracle科目成绩名次-非连续rank select t.s_id 学号, t.s_name 姓名, t.sub_name 科目, t.score 成绩, rank() over(order by score desc nulls last) 名次 from t_score t where t.sub_name = 'Oracle';
查询结果:
学号 | 姓名 | 科目 | 成绩 | 名次 |
4 | 杨过 | Oracle | 77.00 | 1 |
2 | 李四 | Oracle | 77.00 | 1 |
3 | 张三丰 | Oracle | 0.00 | 3 |
3.3查询Oracle科目成绩名次-连续dense_rank
--3.查询Oracle科目成绩名次-连续dense_rank select t.s_id 学号, t.s_name 姓名, t.sub_name 科目, t.score 成绩, dense_rank() over(order by score desc nulls last) 名次 from t_score t where t.sub_name = 'Oracle';
查询结果:
学号 | 姓名 | 科目 | 成绩 | 名次 |
4 | 杨过 | Oracle | 77.00 | 1 |
2 | 李四 | Oracle | 77.00 | 1 |
3 | 张三丰 | Oracle | 0.00 | 2 |
3.4 查询各学生各科排名
--4.查询各学生各科排名 select t.s_id 学号, t.s_name 姓名, t.sub_name 科目, t.score 成绩, dense_rank() over(partition by t.s_name order by score desc nulls last) 名次 from t_score t;
查询结果:
学号 | 姓名 | 科目 | 成绩 | 名次 |
5 | mike | c++ | 80.00 | 1 |
2 | 李四 | 数学 | 80.00 | 1 |
2 | 李四 | Oracle | 77.00 | 2 |
2 | 李四 | 语文 | 50.00 | 3 |
4 | 杨过 | JAVA | 90.00 | 1 |
4 | 杨过 | Oracle | 77.00 | 2 |
1 | 张三 | 语文 | 80.00 | 1 |
1 | 张三 | 数学 | 0.00 | 2 |
3 | 张三丰 | 体育 | 120.00 | 1 |
3 | 张三丰 | 语文 | 10.00 | 2 |
3 | 张三丰 | Oracle | 0.00 | 3 |
3 | 张三丰 | 数学 | 4 |
3.5 查询各科名次(分区)
--5.查询各科名次(分区) select t.s_id 学号, t.s_name 姓名, t.sub_name 科目, t.score 成绩, dense_rank() over(partition by t.sub_name order by score desc nulls last) 名次 from t_score t;
查询结果:
学号 | 姓名 | 科目 | 成绩 | 名次 |
4 | 杨过 | JAVA | 90.00 | 1 |
4 | 杨过 | Oracle | 77.00 | 1 |
2 | 李四 | Oracle | 77.00 | 1 |
3 | 张三丰 | Oracle | 0.00 | 2 |
5 | mike | c++ | 80.00 | 1 |
2 | 李四 | 数学 | 80.00 | 1 |
1 | 张三 | 数学 | 0.00 | 2 |
3 | 张三丰 | 数学 | 3 | |
3 | 张三丰 | 体育 | 120.00 | 1 |
1 | 张三 | 语文 | 80.00 | 1 |
2 | 李四 | 语文 | 50.00 | 2 |
3 | 张三丰 | 语文 | 10.00 | 3 |
相关文章推荐
- eval在MATLAB和Shell中的作用
- 编写你的shell其实很简单
- Window下使用Xshell连接VirtualBox中CentOS SSH最佳实践
- sed使用方法
- awk用法三
- awk用法二
- chapter11:认识与学习bash之(4)管道命令
- chapter11:认识与学习bash之(3)数据流重定向
- 如何把root登陆的shell改为csh?
- Xshell无法连接虚拟机Linux
- Shell编程实战 1.1 监控思路架构介绍
- How to use “svn add” recursively in Linux shell?
- Linux Shell 1>/dev/null 2>&1 &
- 写你的shell,其实很简单[架构篇]
- msf生成shellcode
- Shell编程进阶 2.2 shell数组
- 编写你的shell其实很简单
- Shell编程进阶 2.1 shell函数
- Shell编程进阶 2.0 shell中断继续退出
- Centos7 基本shell命令