数据表和需求
表名:student, 结构和具体内容如下:
name course score
zs Math 100
zs Engl 80
ls Math 90
ls Engl 70
需求如下:
1、获取每个学生最高分对应的学科和分数
(方式一:使用row_number()开窗函数;方式二:不用开窗函数,使用join方式)
扩展:返回每一门课程和对应的最高分的学生姓名(思路:将分组的学生替换为学科即可,此处不再赘述)
2、获取每门课程都高于平均分的人、课程和分数
数据准备
set hive.exec.mode.local.auto=true;
set hive.cli.print.header=true;
create table student stored as orc as
select 'zs' as name, 'Math' as course, 100 as score union all
select 'zs' as name, 'Engl' as course, 80 as score union all
select 'ls' as name, 'Math' as course, 90 as score union all
select 'ls' as name, 'Engl' as course, 70 as score;
需求1:获取每个人最高分对应的学科和分数
第一步:使用开窗函数,用row_number(), 按name分组,每个人的分数排序,
第二步:排好序后,取出每个人的最高分即可