准備數據
浙江,杭州,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