准备数据

浙江,杭州,300

浙江,宁波,150

浙江,温州,200

浙江,嘉兴,100

江苏,南京,270

江苏,苏州,299

江苏,某市,200

江苏,某某市,100

 

创建表

CREATE table pcp

(province string,city string,people int)

ROW FORMAT DELIMITED FIELDS TERMINATED BY ','

STORED AS TEXTFILE;

 

导入数据

load data inpath '/tmp/1.txt' into table pcp;

 

普通查询

select * from pcp order by people desc;

浙江    杭州    300

浙江    宁波    150

浙江    温州    200

浙江    嘉兴    100

江苏    南京    270

江苏    苏州    299

江苏    某市    200

江苏    某某市    100

 

 

综合查询

select province,city,

rank() over (order by people desc) rank,

dense_rank() over (order by people desc) dense_rank,

row_number() over(order by people desc) row_number

from pcp

group by province,city,people;

 

浙江    杭州    300    1    1    1

江苏    苏州    299    2    2    2

江苏    南京    270    3    3    3

江苏    某市    200    4    4    4

浙江    温州    200    4    4    5

浙江    宁波    150    6    5    6

江苏    某某市    100    7    6    7

浙江    嘉兴    100    7    6    8

 

主要注意打圈的:

 row_number顺序下来,

rank:在遇到数据相同项时,会留下空位,(红框内第一列,4,4,6)

dense_rank:在遇到数据相同项时,不会留下空位,(红框内第一列,4,4,5)

 

分组统计查询

select province,city,

rank() over (partition by province order by people desc) rank,

dense_rank() over (partition by province order by people desc) dense_rank,

row_number() over(partition by province order by people desc) row_number

from pcp

group by province,city,people;

江苏    苏州    299    1    1    1

江苏    南京    270    2    2    2

江苏    某市    200    3    3    3

江苏    某某市    100    4    4    4

浙江    杭州    300    1    1    1

浙江    温州    200    2    2    2

浙江    宁波    150    3    3    3

浙江    嘉兴    100    4    4    4

 

Hive ROW_NUMBER,RANK(),DENSE_RANK()的更多相关文章

  1. Hive学习之路 (十四)Hive分析窗口函数(二) NTILE,ROW_NUMBER,RANK,DENSE_RANK

    概述 本文中介绍前几个序列函数,NTILE,ROW_NUMBER,RANK,DENSE_RANK,下面会一一解释各自的用途. 注意: 序列函数不支持WINDOW子句.(ROWS BETWEEN) 数据 ...

  2. 知方可补不足~row_number,rank,dense_rank,ntile排名函数的用法

    回到目录 这篇文章介绍SQL中4个很有意思的函数,我称它的行标函数,它们是row_number,rank,dense_rank和ntile,下面分别进行介绍. 一 row_number:它为数据表加一 ...

  3. ROW_NUMBER()/RANK()/DENSE_RANK()/ntile() over()

    ROW_NUMBER()/RANK()/DENSE_RANK()/ntile() over()   今天女票问我SqlServer的四种排序,当场写了几句Sql让她了解,现把相关Sql放上来. 首先, ...

  4. SQL Server - 四种排序, ROW_NUMBER() /RANK() /DENSE_RANK() /ntile() over()

    >>>>英文版 (更简洁易懂)<<<< 转载自:https://dzone.com/articles/difference-between-rownum ...

  5. SQL Server中排名函数row_number,rank,dense_rank,ntile详解

    SQL Server中排名函数row_number,rank,dense_rank,ntile详解 从SQL SERVER2005开始,SQL SERVER新增了四个排名函数,分别如下:1.row_n ...

  6. 大数据学习day29-----spark09-------1. 练习: 统计店铺按月份的销售额和累计到该月的总销售额(SQL, DSL,RDD) 2. 分组topN的实现(row_number(), rank(), dense_rank()方法的区别)3. spark自定义函数-UDF

    1. 练习 数据: (1)需求1:统计有过连续3天以上销售的店铺有哪些,并且计算出连续三天以上的销售额 第一步:将每天的金额求和(同一天可能会有多个订单) SELECT sid,dt,SUM(mone ...

  7. SQL-OVER与四种排名函数:ROW_NUMBER(),RANK(),DENSE_RANK(),NTILE()

    1 SELECT orderid,custid,val, ROW_NUMBER() OVER(ORDER BY val) AS rownum, RANK() OVER(ORDER BY val) AS ...

  8. rownum, row_number(), rank() , dense_rank(), partition by ,max() keep 语句的区别与用法

    rownum,rownumber(), rank(),dense_rank()都是用来为记录分配序号的, rownum只能在orderby语句排完序后,在外层嵌套查询才能获得正确的行号,用起来相当复杂 ...

  9. sqlserver 中row_number,rank,dense_rank,ntile排名函数的用法

    1.row_number() 就是行号 2.rank:类似于row_number,不同之处在于,它会对order by 的字段进行处理,如果这个字段值相同,那么,行号保持不变 3.dense_rank ...

随机推荐

  1. Hands-On Unity 2018 x 移动游戏开发教程

    Hands-On Unity 2018 x Game Development for Mobile 使用Unity 2018.2创建具有出色游戏功能的精彩游戏   想学习在Unity制作游戏,但不知道 ...

  2. FortiGate端口聚合配置

    1.端口聚合(LACP)应用场景 该功能高端设备上支持,FortiGate60D.FortiGate90D和FortiGate240D等低端型号不支持. 1.在带宽比较紧张的情况下,通过逻辑聚合可以扩 ...

  3. js控制easyui文本框例子及控制html例子

    easyui $('#value').textbox('setValue',''); //赋值 $('#value').textbox({required:false});//必填,方框变红 $('# ...

  4. 模板学习实践三 functor

    #include <iostream>#include <typeinfo> void foo(){ std::cout << "foo() called ...

  5. 主机性能监控之wmi 获取磁盘信息

    标 题: 主机性能监控之wmi 获取磁盘信息作 者: itdef链 接: http://www.cnblogs.com/itdef/p/3990541.html 欢迎转帖 请保持文本完整并注明出处 仅 ...

  6. Json 简记

    JSON : JavaScript Object Notation ---- JavaScript 对象表示语法 Json  比  XML 小,比 xml 快 ==================== ...

  7. 64位版本为什么叫amd64,而不是intel64

    64位版本为什么叫amd64,而不是intel64? 首先了解下常见的几个架构: X86是一个指令集,是刚有个人电脑时候的什么8086,286,386的那个兼容的指令集.   “x86-64”,有时会 ...

  8. Struts2学习第四天——全局结果,动态结果及异常映射

    1.异常映射的配置 当Action方法出错时Struts会返回异常错误信息页面,这种页面方式是不友好的,可以使用try-catch捕捉异常,然后在catch块中返回对应的错误页面.这种为单个<a ...

  9. _ZNote_Mac_技巧_QuickLook功能扩展

    QuicLook(快速查看)是macOS一项非常方便的独有功能: 当选中一个文件,只需要按下空格键即可查看其内容,在按下空格退出QuickLook, 不需要启动再关闭任何软件. 默认支持大部分视频.音 ...

  10. 使用Docker搭建CentOS 7 + Apache 2.4+ PHP7

    从Docker Hub上Pull最新的CentOS 7镜像并新建容器 # sudo docker pull centos docker run -p 8082:80 --name centos_c - ...