2016-09-21 71 views
1

首先要做的是:我能夠單向獲取數據。我的目的是增加我的查詢結果的可讀性。我正在尋找,如果有可能的話。將查詢行數作爲查詢結果中的列查看

我有通過設備送入的表。我想獲得每個小時發送的數據,這些數據由兩個相同的列組成。需要將這兩列分組才能確定一種設備類型。 表結構是這樣的:

| identifier-1 | identifier-2 | day  | hour | data_name | data_value | 
|--------------|--------------|------------|------|-----------|------------| 
| type_1  | subType_4 | 2016-08-25 | 0 | Key-30 | 4342  | 
|--------------|--------------|------------|------|-----------|------------| 
| type_3  | subType_2 | 2016-08-25 | 0 | Key-50 | 96   | 
|--------------|--------------|------------|------|-----------|------------| 
| type_6  | subType_2 | 2016-08-25 | 1 | Key-44 | 324  | 
|--------------|--------------|------------|------|-----------|------------| 
| type_2  | subType_1 | 2016-08-25 | 1 | Key-26 | 225  | 
|--------------|--------------|------------|------|-----------|------------| 

我要使用的是由所有設備發送一個特定DATA_NAME,並獲得該DATA_NAME的計數會給我每個小時發送的數據。可以通過標識符1,標識符2,日期和小時將24行中的數字分組。但是,他們會重複每種設備類型。

| identifier-1 | identifier-2 | day  | hour | count | 
|--------------|--------------|------------|------|-------| 
| type_6  | subType_2 | 2016-08-25 | 0 | 340 | 
|--------------|--------------|------------|------|-------| 
| type_6  | subType_2 | 2016-08-25 | 1 | 340 | 
|--------------|--------------|------------|------|-------| 
|--------------|--------------|------------|------|-------| 
| type_1  | subType_4 | 2016-08-25 | 0 | 32 | 
|--------------|--------------|------------|------|-------| 
| type_1  | subType_4 | 2016-08-25 | 1 | 30 | 
|--------------|--------------|------------|------|-------| 
|--------------|--------------|------------|------|-------| 
|--------------|--------------|------------|------|-------| 

我想查看的結果是這樣的:

| identifier-1 | identifier-2 | day  | count_of_0 | count_of_1 | 
|--------------|--------------|------------|------------|------------| 
| type_6  | subType_2 | 2016-08-25 | 340  | 340  | 
|--------------|--------------|------------|------------|------------| 
| type_1  | subType_4 | 2016-08-25 | 32   | 30  | 
|--------------|--------------|------------|------------|------------| 
|--------------|--------------|------------|------------|------------| 

在SQL中,這是可能得到的子查詢和列中的結果,但它是不可能的蜂巢。我想它被稱爲相關的子查詢。

Hive column as a subquery select 回答這個問題並沒有爲我工作。

你有什麼想法或建議?

+0

感謝您編輯我的問題:) –

回答

0

爲此,您可以使用條件彙總:

select identifier1, identifier2, day, 
     sum(case when hour = 0 then data_value else 0 end) as cnt_0, 
     sum(case when hour = 1 then data_value else 0 end) as cnt_1 
from t 
where data_name = ?? 
group by identifier1, identifier2, day 
order by identifier1, identifier2, day 
+1

這給了我想要的精確視圖。再次感謝 :-) –