美文网首页SQL
窗口函数案例练习(排序)

窗口函数案例练习(排序)

作者: 让数据告诉你 | 来源:发表于2020-12-25 18:58 被阅读0次

第三题:排序

1、每门学科学生成绩排名(是否并列排名、空位排名三种实现)
2、每门学科成绩排名top n的学生

创建表格:
create table test_window3
(name VARCHAR(20),
subject VARCHAR(20),
score int);

插入数据:
如果字段是字符串格式,输入日期的时候要加双引号:
Insert into test_window3 values
('孙悟空','语文',87)
,('孙悟空','数学',95)
,('孙悟空','英语',68)
,('大海','语文',94)
,('大海','数学',56)
,('宋宋','语文',64)
,('宋宋','数学',86)
,('宋宋' ,'英语' , 84)
,('婷婷',  '语文' , 65)
,('婷婷' , '数学',  85)
,('婷婷' , '英语', 78)

1.1 查询每门学科学生成绩排名(是否并列排名、空位排名三种实现)


row_number() :按照12345排序
SELECT *
,row_number() over (PARTITION BY TRIM(subject) ORDER BY score DESC)
FROM test_window3;

rank():按照12335排序
SELECT *
,rank() over (PARTITION BY TRIM(subject) ORDER BY score DESC)
FROM test_window3;

dense_rank() :按照11122排序
SELECT *
,dense_rank() over (PARTITION BY TRIM(subject) ORDER BY score DESC)
FROM test_window3;

由于数据源没有相同分数的,因此排名的不同没有显示出来

1.2 每门学科成绩排名top n的学生

SELECT
    * 
FROM
    ( SELECT *, rank () OVER ( PARTITION BY SUBJECT ORDER BY score DESC ) top3 FROM test_window3 ) AS t 
WHERE
    t.top3 <=3

注意列别名要再子查询里才能使用,在同一个SELECT里使用会报错,使用子查询时记得要给表取个别名

相关文章

  • 窗口函数案例练习(排序)

    第三题:排序 1、每门学科学生成绩排名(是否并列排名、空位排名三种实现)2、每门学科成绩排名top n的学生

  • 窗口函数案例练习(一)

    第一题:基础操作 数据: 操作练习:1)使用 over() 函数进行数据统计, 统计每个用户及表中数据的总数2)求...

  • 窗口函数案例练习(二)

    第二题: 数据: 操作练习:1)查询在2017年4月份购买过的顾客及总人数2)查询顾客的购买明细及月购买总额3)查...

  • 窗口函数和行转列

    窗口函数语法 <窗口函数> over ( [partition by <列清单>] order by <排序用列清...

  • spark SQL利用窗口函数操作hive

    ** * sparksql支持了hive的窗口函数 * 罗列一些窗口函数 * 1.row_number分组排序 *...

  • Hive排序窗口函数

    在开发过程中,经常会遇见排序的场景,比如取top N的问题,这时候row_number(),rank,dense_...

  • Hive

    P8窗口函数需求(二): P9窗口函数需求(三): order by: 对输入做全局排序,所以只有一个reduce...

  • 窗口函数OLAP

    语法:(窗口函数) over(partition by <用于分组的列名> order by <用于排序的列名>)...

  • Hive开窗函数

    一、应用场景: 用于分区排序 动态Group By top N 累计计算 二、函数介绍 1、窗口函数: first...

  • Hive窗口函数详解—及3套案例练习

    目录:一、hive窗口函数语法----over()窗口函数的语法结构----常与over()一起使用的分析函数二、...

网友评论

    本文标题:窗口函数案例练习(排序)

    本文链接:https://www.haomeiwen.com/subject/reomnktx.html