美文网首页
Hive窗口函数row_number案例

Hive窗口函数row_number案例

作者: 顾子豪 | 来源:发表于2021-07-15 23:29 被阅读0次

数据文件是:rownumbertest.txt,字段信息是:id,xb,age,name

1,男,18,张三
2,女,18,李四
3,女,20,王五
4,男,18,赵六
5,男,18,刘七
6,男,19,石九
7,男,38,黄渤
8,女,22,刘嘉玲
9,女,23,王菲
10,女,28,刘亦菲
11,女,18,赵丽颖

用户信息表

create database if not exists hive_test;
use hive_test;
drop table if exists rownumbertest;
create table rownumbertest(id int, xb string, age int, name string) row format
delimited fields terminated by ",";
load data local inpath "/home/hadoop/rownumbertest.txt" into table
rownumbertest;
select * from rownumbertest;

数据结果展示:

id      xb     age    name   rank
1       男      18      张三    5
2       女      18      李四    6
3       女      20      王五    4
4       男      18      赵六    4
5       男      18      刘七    3
6       男      19      石九    2
7       男      38      黄渤    1
8       女      22      刘嘉玲  3
9       女      23      王菲    2
10      女      28      刘亦菲  1
11      女      18      赵丽颖  5

需求:每种性别人群中,年龄最大的两个人
TopN的需求:分组取前几
核心思路:

如果能实现一个操作:
把每一条记录再对应的组中的编号如果能生成出来的话。那么下面的这个SQL能很容易的求出结果
select * from rownumbertest where rank <= 2;

distribute by 和 sort by 搭配使用

select a.id, a.xb, a.age, a.name, row_number() over(distribute by a.xb sort by
a.age desc) as rank from rownumbertest a;

partition by 和 order by 搭配使用

select id,xb,age,name, row_number() over (partition by xb order by age desc) as
index from rownumbertest;
+-----+-----+------+-------+--------+
| id | xb | age | name | index |
+-----+-----+------+-------+--------+
| 10 | 女 | 28 | 刘亦菲 | 1 |
| 9 | 女 | 23 | 王菲 | 2 |
| 8 | 女 | 22 | 刘嘉玲 | 3 |
| 3 | 女 | 20 | 王五 | 4 |
| 11 | 女 | 18 | 赵丽颖 | 5 |
| 2 | 女 | 18 | 李四 | 6 |
| 7 | 男 | 38 | 黄渤 | 1 |
| 6 | 男 | 19 | 石九 | 2 |
| 5 | 男 | 18 | 刘七 | 3 |
| 4 | 男 | 18 | 赵六 | 4 |
| 1 | 男 | 18 | 张三 | 5 |
+-----+-----+------+-------+--------+
select * from (select id,xb,age,name, row_number() over (partition by xb order
by age desc) as index from rownumbertest) abc where abc.index <= 3;
+---------+---------+----------+-----------+------------+
| abc.id | abc.xb | abc.age | abc.name | abc.index |
+---------+---------+----------+-----------+------------+
| 10 | 女 | 28 | 刘亦菲 | 1 |
| 9 | 女 | 23 | 王菲 | 2 |
| 8 | 女 | 22 | 刘嘉玲 | 3 |
| 7 | 男 | 38 | 黄渤 | 1 |
| 6 | 男 | 19 | 石九 | 2 |
| 5 | 男 | 18 | 刘七 | 3 |
+---------+---------+----------+-----------+------------+

相关文章

  • 关于Hive的窗口函数

    Hive窗口函数row_number案例 数据文件是:rownumbertest.txt,字段信息是:id,xb,...

  • Pandas实现Hive中的窗口函数

    1、Hive窗口函数 我们先来介绍一下Hive中几个常见的窗口函数,row_number(),lag()和lead...

  • Hive应用 | 高阶函数

    1、窗口函数 常用到的Hive窗口函数具体有:row_number()、rank()、dense_rank() 这...

  • Hive窗口函数row_number案例

    数据文件是:rownumbertest.txt,字段信息是:id,xb,age,name 用户信息表 数据结果展示...

  • hive优化

    Hive row_number,rank两个函数的区别 窗口函数也称为OLAP(Online Analytical...

  • Hive SQL 窗口函数

    本文首发:大数据每日哔哔-Hive SQL 窗口函数 Hive 的窗口函数 在 SQL 中有一类函数叫做聚合函数,...

  • 大数据之hive04-HIVE SQL中怎么取最后一条记录

    需求 HIVE中怎么取最后一条记录? 解决方案 使用函数:row_number() over([partition...

  • hive窗口函数

    一.窗口函数基本概念 Mysql8.0也支持窗口函数,也称为分析函数,窗口函数与分组聚合函数类似,但是每一...

  • hive窗口函数

    over()开窗 按我的理解,开窗函数就是开出一个小窗口,对小窗口内的数据统计处理。 累计计算窗口函数 sum()...

  • Hive 窗口函数

    Select 窗口函数 over():指定分析函数的数据窗口大小,这个数据窗口大小随行的变化而变化。CURRENT...

网友评论

      本文标题:Hive窗口函数row_number案例

      本文链接:https://www.haomeiwen.com/subject/tkhvpltx.html