在hive中,想要实现分组内排序,一般都是自己写udf实现oracle中分析函数row_number() over(partition)的功能,如果不使用自定义udf,仅使用标准sql实现的话,毫无性能可言,仅做实验而已。
方便起见,以下语句为oracle中语句,但都属于标准sql,在hive中亦可:
CREATE TABLE lxw_t (user_id VARCHAR2(20), class VARCHAR2(20), score NUMBER );
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;
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
按照成绩由高到低排列的结果如下:
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
按照成绩由低到高排列的结果如下:
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
相关推荐
部分普通sql查询在hive中的实现方式详细说明;
Hive中SQL详解
Hive_Sql语法详述,平时工作中遇到的问题,用于Hadoop平台的数据挖掘。
hive不直接支持分组取TopN的操作,需要自定义udf函数打成jar包添加到hive运行环境中
6. Jline包版本不一致的问题,需要拷贝hive的lib目录中jline.2.12.jar的jar包替换掉hadoop中的 /home/hadoop/app/hadoop-2.6.4/share/hadoop/yarn/lib/jline-0.9.94.jar 启动hive bin/hive ---------------------...
// 具有子查询的sql String hql = "select id,name from (select id from table_1 where id={p0}) t1 inner join (select name --this is name\n from table_2) t2"; // 获取id字段的血缘 LineageNode idNode = ...
连接hive数据库,使用sqldeveloper作为客户端
Hive的优点是学习成本低,可以通过类似SQL语句实现快速MapReduce统计,使MapReduce变得更加简单,而不必开发专门的MapReduce应用程序。hive是十分适合数据仓库的统计分析和Windows注册表文件。 本文是Hive的开发...
文章Hive面试题SQL测试题目所需数据,包含建表语句 测试数据等等...................
适用人群:hive学习童鞋,hive方面从业人员 从hive的搭建 到 hive的分区表/内部表/外部表/分桶等sql讲解
基于 Antlr4 的 Hive SQL 解析.zip 大学生课程设计 课程设计 自己大二写的课程设计
hive数仓、hive SQL 、 hive自定义函数 、hive参数深入浅出
hivesql笔记.sql
hadoop数据库中的hive技术,支持一般SQL语句操作数据库,但是也有部分不同,文档中总结了常用的一些操作指令。
HiveSQL基础(一).pdf
hive是基于Hadoop的一...Hive的优点是学习成本低,可以通过类似SQL语句实现快速MapReduce统计,使MapReduce变得更加简单,而不必开发专门的MapReduce应用程序。hive是十分适合数据仓库的统计分析和Windows注册表文件。
1、MapReduce实现基本SQL操作的原理 1.1 Join的实现原理 1.2 Group By的实现原理 1.3 Distinct的实现原理 2.1 Phase1 SQL词法,语法解析 2.1.1 Antlr 2.1.2 抽象语法树AST Tree 2.1.3 样例SQL ........... 2.3 Phase...
--Hive_SQL.sql
深入浅出Hive企业级架构优化、Hive Sql优化、压缩和分布式缓存
hive的12道sql.sql