hive 和 mysql 求解分组 top n
Posted 稚枭天卓
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hive 和 mysql 求解分组 top n相关的知识,希望对你有一定的参考价值。
mysql分组排序求Top N
表结构
按照grp分组,按照num排序,每组取Top 3,输出结果如下:
SELECT * FROM score AS t3
WHERE (
SELECT COUNT(*) FROM score AS t1
LEFT JOIN score AS t2
ON t1.grp = t2.grp AND t1.num < t2.num
WHERE t1.id = t3.id
) < 3
ORDER BY t3.grp ASC, num DESC
HIVE 分组排序求Top N
假设成绩表的记录如下:
物理 80 张三 数学 100 李一 物理 90 张二 数学 90 李二 物理 100 张一 数学 80 李三 .....
经过order by全局排序后,记录如下
物理 100 张一 物理 90 张二 物理 80 张三 ..... 数学 100 李一 数学 90 李二 数学 80 李三 ....
接着执行row_number函数,返回值如下
科目 成绩 学生 row_number 物理 100 张一 1 物理 90 张二 2 物理 80 张三 3 ..... 数学 100 李一 1 数学 90 李二 2 数学 80 李三 3 ....
select subject,score,student from (select subject,score,student from score where dt='2012' distribute by subject sort by subject asc, socre desc) order_score where row_number(subject) <= 100;
以上是关于hive 和 mysql 求解分组 top n的主要内容,如果未能解决你的问题,请参考以下文章