Hive面試題三

2021-08-18 12:30:47 字數 1757 閱讀 2706

2014010114

2014010216

2014010317

2014010410

2014010506

2012010609

2012010732

2012010812

2012010919

2012011023

2001010116

2001010212

2001010310

2001010411

2001010529

2013010619

2013010722

2013010812

2013010929

2013011023

2008010105

2008010216

2008010337

2008010414

2008010516

2007010619

2007010712

2007010812

2007010999

2007011023

2010010114

2010010216

2010010317

2010010410

2010010506

2015010649

2015010722

2015010812

2015010999

2015011023

比如:2010012325表示在2023年01月23日的氣溫為25度。現在要求使用hive,計算每一年出現過的最大氣溫的日期+溫度。

要計算出每一年的最大氣溫。

但是如果我是想select 的是:具體每一年最大氣溫的那一天  + 溫度 。例如  20150109     99

請問該怎麼執行hive語句。。

group by 只需要substr(data,1,4),

但是select  substr(data,1,8),又不在group by 的範圍內。  

是我陷入了思維死角。一直想不出所以然。。求大神指點一下。

在select 如果所需要的。不在group by的條件裡。這種情況如何去分析?

第一步:獲取每一年的最高氣溫:

select substring(line, 1, 4) as year,  max(substring(line, -2)) as max_temp 

from exercise3 group by substring(line, 1, 4);

接下來要求顯示最高溫度的日期:

提供兩種方案:

1、使用topn 的技巧可以解決

2、再次使用一次連線sql既可以解決

這裡使用join連線的方式解決:

select substring(b.line, 1, 8) as max_temp_date, a.max_temp  

from exercise3 b join (

select substring(c.line, 1, 4) as year, max(substring(c.line, -2)) as max_temp

from exercise3 c group by substring(c.line, 1, 4)

) a

on a.year = substring(b.line, 1, 4) and

a.max_temp = substring(b.line, -2);

Hive日期查詢面試題

題目源自一次hive筆試,純手工錄入 欄位名詞 字段型別 中文描述 說明wrcvdate int日期 主鍵year int年 month int月 dayint 日flag int工作日標記 1表示工作日,0表示非工作日 要求編寫sql語句查詢20061231對應的上一工作日日期 我的解答 sele...

Hive面試題 累積報表

userid visitdate visitcount u01 2017 1 215u02 2017 1 236u03 2017 1 228u04 2017 1 203u01 2017 1 236u01 2017 2 218u02 2017 1 236u01 2017 2 224 使用者id 月份 ...

hive行列轉換面試題

一 行轉列的使用 問題 hive如何將 a b 1 a b 2 a b 3 c d 4 c d 5 c d 6 變為 a b 1,2,3 c d 4,5,6 資料 test.txt a b 1 a b 2 a b 3 c d 4 c d 5 c d 6 答案 1.建表 drop table tmp ...