本篇内容介绍了“分组求排名rank,row_number,dense_rank的区别是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
分组求排名
窗口函数
示例
select user_id,user_type,sales, --窗口函数的分析字段 RANK() over (partition by user_type order by sales desc) as rank, ROW_NUMBER() over (partition by user_type order by sales desc) as row_number, DENSE_RANK() over (partition by user_type order by sales desc) as dense_rankfrom order_detail;
根据窗口函数的理解,我们来看上述例子
结果
user_id | user_type | sales | rank | row_number | dense_rank |
---|---|---|---|---|---|
wutong | new | 6 | 1 | 1 | 1 |
qishili | new | 5 | 2 | 2 | 2 |
lilisi | new | 5 | 2 | 3 | 2 |
wanger | new | 3 | 4 | 4 | 3 |
zhangsa | new | 2 | 5 | 5 | 4 |
qibaqiu | new | 1 | 6 | 6 | 5 |
liiu | new | 1 | 6 | 7 | 5 |
liwei | old | 3 | 1 | 1 | 1 |
wangshi | old | 2 | 2 | 2 | 2 |
lisi | old | 1 | 3 | 3 | 3 |
如上述表格,rank() / row_number() / dense_rank() 都是进行排名.
HIVE2.10以后over()函数支持对聚合函数的支持
SELECT rank() OVER (ORDER BY sum(b))FROM tableGROUP BY a;
上面等于于
SELECT sum_b rank() OVER (ORDER BY sum_b)FROM( SELECT SUM(b) AS sum_b FROM table GROUP BY a ) t;
“分组求排名rank,row_number,dense_rank的区别是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程之家网站,小编将为大家输出更多高质量的实用文章!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。