2016-10-14 37 views
0

在HiveQL中,如何根據group1group2計算具有相同分組的id的數量?如何根據兩個分組變量統計具有相同聚類的觀察值的數量?

+-----+--------+--------+ 
| id1 | group1 | group2 | 
+-----+--------+--------+ 
| 1 | Z  | a  | 
| 2 | Z  | a  | 
| 3 | Z  | b  | 
| 4 | Z  | c  | 
| 5 | Y  | d  | 
+-----+--------+--------+ 

結果返回應爲3,因爲我們應該採取的最大值{(Z,A)(Z,B)(Z,C)},它是2,和的最大值{(Y, d)},這是1.

我試圖在沒有成功的情況下使用子查詢在HiveQL中進行編碼。任何提示將不勝感激。

+0

你是怎麼拿到3查詢?你總結了ID嗎? –

+0

是的,這就是目標。仍想着如何編寫這個代碼 – user2205916

+0

爲什麼3 | Z | b | | 4 | Z | c不是你的結果的一部分? –

回答

0

最後用SQL小提琴搞清楚了。嘗試使玩具比如用:

CREATE TABLE test 
(`id` int, `group1` varchar(7), `group2` varchar(7)); 
INSERT INTO test 
    (`id`, `group1`, `group2`) 
VALUES 
    (1, 'Z', 'a'), 
    (2, 'Z', 'a'), 
    (3, 'Z', 'b'), 
    (4, 'Z', 'c'), 
    (5, 'Y', 'd'); 

運行下面的回報3.

SELECT SUM(d.max_val) 
    FROM(SELECT MAX(c.count) as max_val, c.group1, c.group2 
     FROM (SELECT COUNT(*) AS count, group1, group2 
      FROM test 
      GROUP BY group1, group2) c 
GROUP BY c.group1, c.group2) d 
相關問題