hive函数--排序row_number,rank over
2016-04-05 17:18
148 查看
从学生的几门成绩中选出成绩最好的一门
1.row_number() over
select student_id,class,score
from
( select student_id ,class,score,row_number() over(partition by user_id order by score desc)num
from result --按照student_id,将成绩从高到低排序,得到成绩的排序
)a
where num=1
上面的写法只能写出一门功课,当语文和数学成绩相同时,那又怎么办?
2.rank() over/dense_rank() over
select student_id,class,score
from
( select student_id ,class,score,rank() over(partition by user_id order by score desc)num
from result --按照student_id,将成绩从高到低排序,得到成绩的排序
)a
where num=1
dense_rank() 和rank 之间的区别就在于,当数学语文都是第一的时候,接下来的英语的排名会有所不同,rank 的排名是3,而在dense_rank中,排名2。
也就是说dense_rank不里的排名是连续的,而rank内的排序不一定是连续的。
1.row_number() over
select student_id,class,score
from
( select student_id ,class,score,row_number() over(partition by user_id order by score desc)num
from result --按照student_id,将成绩从高到低排序,得到成绩的排序
)a
where num=1
上面的写法只能写出一门功课,当语文和数学成绩相同时,那又怎么办?
2.rank() over/dense_rank() over
select student_id,class,score
from
( select student_id ,class,score,rank() over(partition by user_id order by score desc)num
from result --按照student_id,将成绩从高到低排序,得到成绩的排序
)a
where num=1
dense_rank() 和rank 之间的区别就在于,当数学语文都是第一的时候,接下来的英语的排名会有所不同,rank 的排名是3,而在dense_rank中,排名2。
也就是说dense_rank不里的排名是连续的,而rank内的排序不一定是连续的。
相关文章推荐
- xStream完美转换XML、JSON
- SQL 多字段,合并显示
- setStyleSheet来设定窗口部件的样式
- 【技术干货】那些年我追过的前端技术
- C++ 安全的删除指针和数组的宏定义方法
- 大牛
- 对于struts框架中jsp页面显示图片数据流问题解决方案
- c++封装之对象成员指针
- android Android-PullToRefresh 下拉刷新
- 最简单的基于FFmpeg的移动端例子:Android 视频解码器-单个库版
- ImageLoader+自定义ImageView圆形图片
- Android4.4 Systemui状态栏状态图标更新流程分析
- SQL SERVER 中identity用法
- Leetcode 14. Longest Common Prefix(python)
- 向下之旅(二十四):kobject与sysfs
- less 入门1
- c++ 类的复制构造及赋值运算-练习题
- BootStrap之基础-2 CSS样式(全局CSS样式)
- redis安装部署
- C++虚函数实现&&单继承和多继承下的虚函数布局