ROW_NUMBER,RANK(),DENSE_RANK()

先了解这三个之间的区别:

Rank():1,2,2,4,5(一般用这个较多,不会影响总排名)

Dense_rank():1,2,2,3,4,5(会影响最终排名)

Row_number():1,2,3,4,5,6(按照行数显示)

语法格式:row_number() OVER (partition by COL1 order by COL2 desc ) rank
partition by:类似hive的建表,分区的意思;
order by :排序,默认是升序,加desc降序;
rank:表示别名
表示根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)

取TOPN数据

按照国家提取TOP3

样本数据:

国家 城市 Visitors
阿联酋,阿布扎比,137
阿联酋,阿布扎比,146
阿联酋,阿布扎比,178
阿联酋,阿布扎比,337
阿联酋,阿布扎比,178
阿联酋,阿布扎比,227
阿联酋,阿布扎比,157
阿联酋,迪拜,144
阿联酋,迪拜,268
阿联酋,迪拜,103
阿联酋,迪拜,141
阿联酋,迪拜,108
阿联酋,迪拜,266
澳大利亚,悉尼,141
澳大利亚,悉尼,122
澳大利亚,悉尼,153
澳大利亚,悉尼,128
澳大利亚,墨尔本,294
澳大利亚,墨尔本,230
澳大利亚,墨尔本,159
澳大利亚,墨尔本,188
澳大利亚,堪培拉,249
澳大利亚,堪培拉,378
澳大利亚,堪培拉,255
澳大利亚,堪培拉,240

导入数据

  1. --执行下述语句
  2. hive (temp)> hive -f 'HQL/loaddata.hql'>out/tmp;
  3. -----------------------------------------------
  4. drop table temp.tripdata;
  5. CREATE table datatable (
  6. country string,
  7. city string,
  8. Visitors int)
  9. ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
  10. STORED AS TEXTFILE;
  11.  
  12. load data local inpath 'home/loaddata'
  13. overwrite into table temp.tripdata;
  14. ----------------------------------------------
  15.  
  16. ----------------------------------------------
  17. --查看结果
  18. hive (temp)> select * from tripdata;
  19. country city visitors

  1. 阿联酋 阿布扎比 137
  2. 阿联酋 阿布扎比 146
  3. 阿联酋 阿布扎比 178
  4. 阿联酋 阿布扎比 337
  5. 阿联酋 阿布扎比 178
  6. 阿联酋 阿布扎比 227
  7. 阿联酋 阿布扎比 157
  8. 阿联酋 迪拜 144
  9. 阿联酋 迪拜 268
  10. 阿联酋 迪拜 103
  11. 阿联酋 迪拜 141
  12. 阿联酋 迪拜 108
  13. 阿联酋 迪拜 266
  14. 澳大利亚 悉尼 141
  15. 澳大利亚 悉尼 122
  16. 澳大利亚 悉尼 153
  17. 澳大利亚 悉尼 128
  18. 澳大利亚 墨尔本 294
  19. 澳大利亚 墨尔本 230
  20. 澳大利亚 墨尔本 159
  21. 澳大利亚 墨尔本 188
  22. 澳大利亚 堪培拉 249
  23. 澳大利亚 堪培拉 378
  24. 澳大利亚 堪培拉 255
  25. 澳大利亚 堪培拉 240
  1. select country,city,visitors
  2. from tripdata
  3. order by visitors desc
  4. limit 5;
  5.  
  6. country city visitors

  1. 澳大利亚 堪培拉 378
  2. 阿联酋 阿布扎比 337
  3. 澳大利亚 墨尔本 294
  4. 阿联酋 迪拜 268
  5. 阿联酋 迪拜 266

按照国家、提取城市TOP3

  1. select a.*
  2. from (
  3. select country,city,visitors, row_number() over (partition by country order by visitors desc ) rank
  4. from tripdata
  5. order by country,visitors desc
  6. ) a
  7. where a.rank<=3;
  8.  
  9. --结果
  10. a.country a.city a.visitors a.rank
  1. 结果如下:
  2. 澳大利亚 堪培拉 378 1
  3. 澳大利亚 墨尔本 294 2
  4. 澳大利亚 堪培拉 255 3
  5. 阿联酋 阿布扎比 337 1
  6. 阿联酋 迪拜 268 2
  7. 阿联酋 迪拜 266 3

按照城市提取TOP3

  1. select a.*
  2. from (
  3. select country,city,visitors, row_number() over (partition by city order by visitors desc ) rank
  4. from tripdata
  5. order by country,city,visitors desc
  6. ) a
  7. where a.rank<=3;

  1. --结果
  2. a.country a.city a.visitors a.rank
  3. 澳大利亚 堪培拉 378 1
  4. 澳大利亚 堪培拉 255 2
  5. 澳大利亚 堪培拉 249 3
  6. 澳大利亚 墨尔本 294 1
  7. 澳大利亚 墨尔本 230 2
  8. 澳大利亚 墨尔本 188 3
  9. 澳大利亚 悉尼 153 1
  10. 澳大利亚 悉尼 141 2
  11. 澳大利亚 悉尼 128 3
  12. 阿联酋 迪拜 268 1
  13. 阿联酋 迪拜 266 2
  14. 阿联酋 迪拜 144 3
  15. 阿联酋 阿布扎比 337 1
  16. 阿联酋 阿布扎比 227 2
  17. 阿联酋 阿布扎比 178 3

hive求TopN语句的更多相关文章

  1. 第2节 网站点击流项目(下):3、流量统计分析,分组求topN

    四. 模块开发----统计分析 select * from ods_weblog_detail limit 2;+--------------------------+---------------- ...

  2. [PY3]——求TopN/BtmN 和 排序问题的解决

    需求 K长的序列,求TopN K长的序列,求BtmN 排序问题 解决 heap.nlargest().heap.nsmallest( ) sorted( )+切片 max( ).min( ) 总结和比 ...

  3. 吴超老师课程--Hive的执行语句

    为什么选择Hive? (1)基于Hadoop的大数据的计算/扩展能力(2)支持SQL like查询语言(3)统一的元数据管理(4)简单编程 一:Hive的数据类型(1)基本数据类型tinyint/sm ...

  4. hive 添加UDF(user define function) hive的insert语句

    add JAR /home/hadoop/study/study2/utf.jar; package my.bigdata.udf; import org.apache.hadoop.hive.ql. ...

  5. Hive——基本DML语句

    Hive--基本DML语句 DML:Data Manipulation Language(数据操作语言,与关系型数据库相似) 官方手册:https://cwiki.apache.org/conflue ...

  6. Hive——基本DDL语句

    Hive--基本DDL语句 DDL:Data Definition Language(数据定义语言,与关系型数据库相似) 官方手册:https://cwiki.apache.org/confluenc ...

  7. Hive的HQL语句及数据倾斜解决方案

    [版权申明:本文系作者原创,转载请注明出处] 文章出处:http://blog.csdn.net/sdksdk0/article/details/51675005 作者: 朱培          ID ...

  8. Hadoop学习之路(二十)MapReduce求TopN

    前言 在Hadoop中,排序是MapReduce的灵魂,MapTask和ReduceTask均会对数据按Key排序,这个操作是MR框架的默认行为,不管你的业务逻辑上是否需要这一操作. 技术点 MapR ...

  9. 求SQL语句递归的算法

    表结构是这样的 部门    上级部门    A           BB           CC           DA           AB           BC           C ...

随机推荐

  1. 自适应rem.js

    用rem.js来实现自适应屏幕大小,要注意border不用rem做单位  代码如下: (function (doc, win) { //orientationchange : 判断手机是水平方向还是垂 ...

  2. 【vue】函数式组件

    在 2.5.0 及以上版本中,如果你使用了单文件组件,那么基于模板的函数式组件可以这样声明: <template functional> <div class="cell& ...

  3. JAVA的运算符和条件结构

    一.JAVA的运算符. 1.赋值运算符 赋值就是把一个变量的值赋给另一个变量. 语法: 变量名=表达式     例如  n = m + 5 2.算术运算符      算术运算符是数学中常用的加.减.乘 ...

  4. Selenium-WebDriver框架常用基本操作

    1.基础元素定位的八种方法 WebDriver driver = new ChromeDriver(); WebElement element = new WebElement(); 1.1 By.i ...

  5. cocos2dx-lua调用C++

    文参考:https://www.cnblogs.com/xiaonanxia/p/4987856.html 上面的文章是IOS版教程,用4部分说明原理,1部分说操作步骤. 这里用window VS20 ...

  6. python3中的type与object

    在python中,一切皆对象,应该怎么理解呢?? 先来看几个例子: [root@localhost ~]# python3 Python 3.6.3rc1 (default, Feb 26 2018, ...

  7. EtherNet/IP 协议结构

    一.Ethernet/IP 协议 将标准的TCP/IP以太网延伸 到工业实时控制并和通用工业协议(CIP)结合,将很好地帮助用户获得更加开放集成的工业自动化和信息化的整体解决方案.EtherNet/I ...

  8. ***微信小程序学习文档和资料归档收集

    微信小程序官方文档: https://cloud.tencent.com/document/product/619 小程序培训视频教程: https://xw.qq.com/edu/201805140 ...

  9. SpringBoot的自动配置

    1.根据条件来装配bean,SpringBoot的自动配置,根据条件进行自动配置. 首先创建一个接口,如下所示: package com.bie.encoding; /** * * @Descript ...

  10. Aspnet Core 对 Resetful API版本的支持

    在实际项目过程中API往往会收到迭代的影响,同时具备多个版本,因此resetful接口的版本话是非常重要的. 其实官方就提供了很好的支持,微软爸爸在nuget提供了Microsoft.AspNetCo ...