已知:两种类型的排序(分区和非分区):使用和不使用分区

-计算两种方式(连续、不连续),相应的功能:dense_rank,秩



查询原始数据:学号、姓名、职称、成绩

SELECT * FROM t_score






s_id


s_name


sub_name


退休主管服务队




一


狼


中国人


八十




二


丽莎


数学


八十




一


狼


数学


零




二


丽莎


中国人


五十




三


张三丰


中国人


十




三


张三丰


数学


U3000




三


张三丰


体育


一百二十




四


杨过


java


九十




五


迈克


C++


八十




三


张三丰


甲骨文公司


零




四


杨过


甲骨文公司


七十七




二


丽莎


甲骨文公司


七十七






查询每个学生的Oracle排名(简单排名)
选择sc.s_id,sc.s_name,sub_name,sc.score,
等级()在(按评分排序顺序)排名
从t_score SC
在sub_name = 'oracle







s_id


s_name


sub_name


退休主管服务队


排名




四


杨过


甲骨文公司


七十七


一




二


丽莎


甲骨文公司


七十七


一




三


张三丰


甲骨文公司


零


三







对比:秩()和():dense_rank间断排名连续排名(都是简单的排名)

选择sc.s_id,sc.s_name,sub_name,sc.score,
dense_rank()在(按评分排序顺序)排名
从t_score SC
在sub_name = 'oracle






s_id


s_name


sub_name


退休主管服务队


排名




四


杨过


甲骨文公司


七十七


一




二


丽莎


甲骨文公司


七十七


一




三


张三丰


甲骨文公司


零


二






每个年级学生的排名(分部排名)
选择sc.s_id,sc.s_name,sub_name,sc.score,
秩()超过
(按评分排序顺序排名sub_name分区)
从t_score SC






s_id


s_name


sub_name


退休主管服务队


排名




四


杨过


java


九十


一




四


杨过


甲骨文公司


七十七


一




二


丽莎


甲骨文公司


七十七


一




三


张三丰


甲骨文公司


零


三




五


迈克


C++


八十


一




三


张三丰


数学


U3000


一




二


丽莎


数学


八十


二




一


狼


数学


零


三




三


张三丰


体育


一百二十


一




一


狼


中国人


八十


一




二


丽莎


中国人


五十


二




三


张三丰


中国人


十


三






搜索每一部分的前2名(分区排名)

比如:新闻专栏,专栏的前3条新闻。

货物清单是每种货物中的前10种。


从中选择*(
选择sc.s_id,sc.s_name,sub_name,sc.score,
在dense_rank()
(按评分排序顺序排名sub_name分区)
从t_score SC
x)
其中x排序为< = 2







s_id


s_name


sub_name


退休主管服务队


排名




四


杨过


java


九十


一




四


杨过


甲骨文公司


七十七


一




二


丽莎


甲骨文公司


七十七


一




三


张三丰


甲骨文公司


零


二




五


迈克


C++


八十


一




三


张三丰


数学


U3000


一




二


丽莎


数学


八十


二




三


张三丰


体育


一百二十


一




一


狼


中国人


八十


一




二


丽莎


中国人


五十


二







询问学生的总分
选择s_id,s_name,总和(评分)sum_score从t_score
集团通过s_id,s_name






s_id


s_name


sum_score




一


狼


八十




二


丽莎


二百零七




三


张三丰


一百三十




四


杨过


一百六十七




五


迈克


八十






根据总分查询学生的姓名
选择x *,
等级()在(由sum_score倒序)排名
(从
选择s_id,s_name,总和(评分)sum_score从t_score
集团通过s_id,s_name)X






s_id


s_name


sum_score


排名




二


丽莎


二百零七


一




四


杨过


一百六十七


二




三


张三丰


一百三十


三




一


狼


八十


四




五


迈克


八十


四







Grammar:
排序()(排序字段的顺序)
秩()在(按组字段在分区中按排序字段顺序)

1。|降序排序顺序:ASC相关业务:
例子:寻找优秀学生:成绩:迟到的降序:升序
2。分区字段:根据哪个字段划分哪个字段。

问:分区和组之间的区别是什么
分区只是原始数据的顺序(记录的数目是常量)。
组是原始数据的聚合(更少的记录,每组的一个)和注意:聚合。

uff1a脚本


创建表t_score
(
自动识别号码的主键,
s_id号(3),
s_name char(8)不为空,
sub_name VARCHAR2(20),
进球数(2)
);
插入t_score(自动识别,s_id,s_name,sub_name,评分)
价值观(8, 1,三,语言,80);
插入t_score(自动识别,s_id,s_name,sub_name,评分)
值(9, 2,‘李四',‘数学',80);
插入t_score(自动识别,s_id,s_name,sub_name,评分)
价值观(10, 1,张三,数学,0);
插入t_score(自动识别,s_id,s_name,sub_name,评分)
价值观(11, 2,‘李四',‘语言',50);
插入t_score(自动识别,s_id,s_name,sub_name,评分)
价值观(12, 3,‘张三丰',‘语言',10);
插入t_score(自动识别,s_id,s_name,sub_name,评分)
值(13, 3,张三丰,数学,NULL);
插入t_score(自动识别,s_id,s_name,sub_name,评分)
价值观(14, 3,张三丰,体育,120);
插入t_score(自动识别,s_id,s_name,sub_name,评分)
值(15, 4,'杨过','java ',90);
插入t_score(自动识别,s_id,s_name,sub_name,评分)
值(16, 5,迈克,C + +,80);
插入t_score(自动识别,s_id,s_name,sub_name,评分)
值(3, 3,'张三丰','oracle ',0);
插入t_score(自动识别,s_id,s_name,sub_name,评分)
值(4, 4,'杨过','oracle ',77);
插入t_score(自动识别,s_id,s_name,sub_name,评分)
值(17, 2,李四,'oracle ',77);
承诺;