热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

hive中使用标准sql实现分组内排序

hive中使用标准sql实现分组内排序在hive中,想要实现分组内排序,一般都是自己写udf实现oracle中分析函数row_number()over(partition)的功能,如果不使用自定义udf,仅使用标准sql实现的话,毫无性能可言,仅做实验而已。方便起见,以下语句为oracle中语句

hive中使用标准sql实现分组内排序 在hive中,想要实现分组内排序,一般都是自己写udf实现oracle中分析函数row_number() over(partition)的功能,如果不使用自定义udf,仅使用标准sql实现的话,毫无性能可言,仅做实验而已。 方便起见,以下语句为oracle中语句

hive中使用标准sql实现分组内排序

在hive中,想要实现分组内排序,一般都是自己写udf实现oracle中分析函数row_number() over(partition)的功能,如果不使用自定义udf,仅使用标准sql实现的话,毫无性能可言,仅做实验而已。

方便起见,以下语句为oracle中语句,但都属于标准sql,在hive中亦可:

Sql代码

CREATE TABLE lxw_t (user_id VARCHAR2(20),

class VARCHAR2(20),

score NUMBER

);

Sql代码

INSERT INTO liuxiaowen.lxw_t VALUES ('user_1','语文','90');

INSERT INTO liuxiaowen.lxw_t VALUES ('user_1','数学','86');

INSERT INTO liuxiaowen.lxw_t VALUES ('user_1','英语','96');

INSERT INTO liuxiaowen.lxw_t VALUES ('user_1','体育','77');

INSERT INTO liuxiaowen.lxw_t VALUES ('user_2','语文','88');

INSERT INTO liuxiaowen.lxw_t VALUES ('user_2','数学','65');

INSERT INTO liuxiaowen.lxw_t VALUES ('user_2','英语','67');

INSERT INTO liuxiaowen.lxw_t VALUES ('user_2','体育','98');

commit;

Sql代码

SELECT x.user_id,x.class,x.score,COUNT(1) AS seq

FROM (

SELECT a.*,b.score score2 FROM

liuxiaowen.lxw_t a ,

liuxiaowen.lxw_t b

WHERE a.user_id = b.user_id (+)

) x

WHERE x.score2 >= x.score --按照成绩由高到低排列

--WHERE x.score >= x.score2 --按照成绩由低到高排列

GROUP BY x.user_id,x.class,x.score

order BY 1,4

按照成绩由高到低排列的结果如下:

Sql代码

USER_ID CLASS SCORE SEQ

user_1 英语 96 1

user_1 语文 90 2

user_1 数学 86 3

user_1 体育 77 4

user_2 体育 98 1

user_2 语文 88 2

user_2 英语 67 3

user_2 数学 65 4

按照成绩由低到高排列的结果如下:

Sql代码

USER_ID CLASS SCORE SEQ

user_1 体育 77 1

user_1 数学 86 2

user_1 语文 90 3

user_1 英语 96 4

user_2 数学 65 1

user_2 英语 67 2

user_2 语文 88 3

user_2 体育 98 4


推荐阅读
author-avatar
我负天下人0
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有