Hive ROW_NUMBER,RANK(),DENSE_RANK()


准備數據

浙江,杭州,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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM