2014-02-07 114 views
0

我是Hive新手,這對我來說看起來像一個棘手的查詢。任何幫助將不勝感激。我們有國家的事故數據,我們有明智和年份的事故統計。Hive查詢:按狀態分組數據並獲得十年計數

我們如何將數據按狀態分組,總結所有月份的事故數量,總共得到12年。輸出應該是國家名稱,Acciden類型:。事故類型是「道路交通事故」,「鐵路道路交通事故」,「其他鐵路事故」

我們創建了以下表和data can be found here

create table accidents_data(STATE string,Year string,AcciddentType string,JANUARY int,FEBRUARY int,MARCH int ,APRIL int,MAY int,JUNE int,JULY int,AUGUST int,SEPTEMBER int,OCTOBER int,NOVEMBER int,DECEMBER int) 
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\n' 
STORED AS TEXTFILE; 

回答

0

正如我在資料看到,你錯過了最後一欄Hive模式中的「TOTAL」。如果該列存在,則以下查詢將完成您的工作。

select STATE, AcciddentType, sum(TOTAL) as GrandTotal 
where AcciddentType!='Total' 
group by STATE, AcciddentType; 

更新: 如果你沒有在蜂巢模式中的最後一列「TOTAL」,那麼下面的查詢將工作:

select STATE, AcciddentType, (
sum(JANUARY) + 
sum(FEBRUARY) + 
sum(MARCH) + 
sum(APRIL) + 
sum(MAY) + 
sum(JUNE) + 
sum(JULY) + 
sum(AUGUST) + 
sum(SEPTEMBER) + 
sum(OCTOBER) + 
sum(NOVEMBER) + 
sum(DECEMBER) 
) as GrandTotal 
where AcciddentType!='Total' 
group by STATE, AcciddentType; 
+0

承擔全部列是不存在的,什麼是可能的查詢。 – Vikram

+0

@SwiftGuy請檢查最新的答案 –