【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终端命令格式
01.终端命令格式 command [-options] [parameter] 说明: command:命令名,响应功能的英文单词或单词的缩写 [-options]:选项,可用来对命令进行控制,也可 ...
- 多线程高并发编程(5) -- CountDownLatch、CyclicBarrier源码分析
一.CountDownLatch 1.概念 public CountDownLatch(int count) {//初始化 if (count < 0) throw new IllegalArg ...
- 基于thinkphp3.2.3开发的CMS内容管理系统 - ThinkPHP框架
基于thinkphp3.2.3开发的CMS内容管理系统 thinkphp版本:3.2.3 功能: --分类栏目管理 --文章管理 --用户管理 --友情链接管理 --系统设置 目前占时这些功能,更多功 ...
- 一站式轻量级框架 Spring
Spring 简介 Spring 是一个轻量级的 Java 开发框架,它是为了解决企业应用开发的复杂性而创建的.Spring 的核心是控制反转(IoC)和面向切面编程(AOP).简单来说,Spring ...
- react: typescript interface useState issue
define interface: interface ILoginState { imageId: string; imageSrc: string; username: string; passw ...
- Java集合linkdList
LinkedList特有功能: A:添加功能 public void addFitst(Object e) public void addLast(Object e) B:获取功能 public Ob ...
- TokenMismatchException Laravel
随便写写:很久没写了,今天闲的. 1.错误原因:出现这个错误肯定是因为你在Laravel开启了csrf防御,但是你post提交过去的字段中没有生成_token. 2.如果你提交的字段中带有了_toke ...
- bootstrop登陆页面
bootstrap做登入注册页面,使用validate做表单验证 技术:bootstrap,font-awesome,jquery-validate: 特点:响应式布局,表单验证(用户两次密码是否相同 ...
- Scala教程之:Enumeration
Enumeration应该算是程序语言里面比较通用的一个类型,在scala中也存在这样的类型, 我们看下Enumeration的定义: abstract class Enumeration (init ...
- 替换input单选框的样式
实现效果:. css的input单选框的样式很丑,有时候不想使用原生的样式,如上照片,可以使用下面的方法. 思路是,给inpu加visibility:hidden隐藏,然后使用不同的图片绝对定位覆盖在 ...