【Hadoop离线基础总结】hive的窗口函数
hive的窗口函数
概述
hive中一般求取TopN时就需要用到窗口函数
专业窗口函数一般有三个
rank() over
dense rank() over
row_number() over实例
- 创建一个f_test表拿到以下数据
+------------+--------------+-------------+--+
| f_test.id | f_test.name | f_test.sal |
+------------+--------------+-------------+--+
| 1 | a | 10 |
| 2 | a | 12 |
| 3 | b | 13 |
| 4 | b | 12 |
| 5 | a | 14 |
| 6 | a | 15 |
| 7 | a | 13 |
| 8 | b | 11 |
| 9 | a | 16 |
| 10 | b | 17 |
| 11 | a | 14 |
+------------+--------------+-------------+--+
- 现在用窗口函数求取TopN
SELECT id,name,sal,
RANK() over(PARTITION by name ORDER BY sal DESC) rp,
DENSE_RANK() over(PARTITION by name ORDER BY sal DESC) drp,
ROW_NUMBER() over(PARTITION by name ORDER BY sal DESC) rmp
FROM f_test;
partition by就相当于group by,但是这里不能替换为group by,而且partition by后只能跟一个字段,group by可以跟多个字段 - 结果
+-----+-------+------+-----+------+------+--+
| id | name | sal | rp | drp | rmp |
+-----+-------+------+-----+------+------+--+
| 9 | a | 16 | 1 | 1 | 1 |
| 6 | a | 15 | 2 | 2 | 2 |
| 11 | a | 14 | 3 | 3 | 3 |
| 5 | a | 14 | 3 | 3 | 4 |
| 7 | a | 13 | 5 | 4 | 5 |
| 2 | a | 12 | 6 | 5 | 6 |
| 1 | a | 10 | 7 | 6 | 7 |
| 10 | b | 17 | 1 | 1 | 1 |
| 3 | b | 13 | 2 | 2 | 2 |
| 4 | b | 12 | 3 | 3 | 3 |
| 8 | b | 11 | 4 | 4 | 4 |
+-----+-------+------+-----+------+------+--+
可以看出在a组的sal中有两个相同值
rank() over是给出了相同的序号3,然后直接跳到5,所以他最后的序号要比实际数据数量少
dense rank() over同样给出了相同的序号3,但是是接着顺序给出了4,最后序号和实际数据数量相同
row_number() over则是单纯地按照顺序进行排序,不受相同name影响
- 创建一个f_test表拿到以下数据
【Hadoop离线基础总结】hive的窗口函数的更多相关文章
- 【Hadoop离线基础总结】Hive调优手段
Hive调优手段 最常用的调优手段 Fetch抓取 MapJoin 分区裁剪 列裁剪 控制map个数以及reduce个数 JVM重用 数据压缩 Fetch的抓取 出现原因 Hive中对某些情况的查询不 ...
- 【Hadoop离线基础总结】流量日志分析网站整体架构模块开发
目录 数据仓库设计 维度建模概述 维度建模的三种模式 本项目中数据仓库的设计 ETL开发 创建ODS层数据表 导入ODS层数据 生成ODS层明细宽表 统计分析开发 流量分析 受访分析 访客visit分 ...
- 【Hadoop离线基础总结】oozie的安装部署与使用
目录 简单介绍 概述 架构 安装部署 1.修改core-site.xml 2.上传oozie的安装包并解压 3.解压hadooplibs到与oozie平行的目录 4.创建libext目录,并拷贝依赖包 ...
- 【Hadoop离线基础总结】Hue的简单介绍和安装部署
目录 Hue的简单介绍 概述 核心功能 安装部署 下载Hue的压缩包并上传到linux解压 编译安装启动 启动Hue进程 hue与其他框架的集成 Hue与Hadoop集成 Hue与Hive集成 Hue ...
- 【Hadoop离线基础总结】impala简单介绍及安装部署
目录 impala的简单介绍 概述 优点 缺点 impala和Hive的关系 impala如何和CDH一起工作 impala的架构及查询计划 impala/hive/spark 对比 impala的安 ...
- 【Hadoop离线基础总结】Sqoop常用命令及参数
目录 常用命令 常用公用参数 公用参数:数据库连接 公用参数:import 公用参数:export 公用参数:hive 常用命令&参数 从关系表导入--import 导出到关系表--expor ...
- Hadoop(分布式系统基础架构)---Hive与HBase区别
对于刚接触大数据的用户来说,要想区分Hive与HBase是有一定难度的.本文将尝试从其各自的定义.特点.限制.应用场景等角度来进行分析,以作抛砖引玉之用. Hive是什么? Apache Hive是 ...
- 【Hadoop离线基础总结】Hue与Hive集成
目录 1.更改hue的配置hue.ini 2.启动hive的metastore以及hiveserver2服务 3.启动hue进程,查看Hive是否与Hue集成成功 1.更改hue的配置hue.ini ...
- 【Hadoop离线基础总结】Hive的基本操作
Hive的基本操作 创建数据库与创建数据库表 创建数据库的相关操作 创建数据库:CREATE TABLE IF NOT EXISTS myhive hive创建表成功后的存放位置由hive-site. ...
随机推荐
- Linux-设备
一.在Linux系统中,每个设备都被当成一个文件来对待. 在Linux系统中,几乎所有的硬件设备都在/dev这个目录内.
- ADT_Bundle搭建
1.打开SDK Manager.exe,打开的速度有点慢.点击右下角的[install n packages...],选择[accept ...],点击[install],然后等待安装.过程有点漫长, ...
- 你只要5行代码,拥有你的个性二维码,用Python生成动态二维码
如果想了解更多关于python的应用,可以私信我,或者点击下方链接自行获取,里面到资料都是免费的(http://t.cn/A6Zvjdun) 二维码满天飞,但是有没有想过Python也能制作出专属于自 ...
- 纯js时钟特效详细代码分析实例教程
电子时钟是网上常见的功能,在学习date对象和定时器功能时,来完成一个电子时钟的制作是不错的选择.学习本教程之前,读者需要具备html和css技能,同时需要有简单的javascript基础. 先准备一 ...
- 使用GML的八方向自动寻路
使用GML的八方向自动寻路 本教程适合无基础人员使用. 提示 本教程中仅使用了最简单的方法,并且有一些错误和不规范之处.请谅解一下,在评论区提出,我会修改.古人曰"教学相长",希望 ...
- mysql搭建亿级cmd5数据库,毫秒级查询 完全过程
前言: 最近也在玩数据库,感觉普通机子搞数据库,还是差了点,全文查找,慢的要查一分钟更久. 但是搞cmd5库很不错,亿级数据库,毫秒级. qq 944520563好吧,下面开始,首先你得需要一个mys ...
- IOC 概念
转摘:https://www.cnblogs.com/DebugLZQ/archive/2013/06/05/3107957.html 博文目录 1.IOC的理论背景 2.什么是IOC 3.IOC也叫 ...
- mysql 更改默认字符集
mysql 默认字符集概述 首先,MySQL的字符集问题主要是两个概念: haracter Sets Collations 前者是字符内容及编码,后者是对前者进行比较操作的一些规则.这两个参数集可以在 ...
- Windows API Index
https://docs.microsoft.com/en-us/windows/desktop/apiindex/windows-api-list
- 二进制安装MySQL及破解密码
二进制安装MySQL及破解密码 1.确保系统中有依赖的libaio 软件,如果没有: yum -y install libaio 2.解压二进制MySQL软件包 tar xf mysql-5.7.24 ...