2
我目前有一個問題,我需要找到一組內的組數。但是,我想爲包含組創建聯機,並在一個字符串內連接較小的組。SQL Group由另一個組內的
下表顯示了我目前所面臨的形勢:
----------------------------------------
Timestamp ID Member
----------------------------------------
1 1 A
1 1 B
1 2 A
1 2 B
1 2 C
2 1 A
2 2 A
2 2 A
2 2 C
----------------------------------------
現在我要找到每個時間戳,每個ID的許多(不同)的成員是如何在表中,即,結果應是這樣的:
Timestamp MemberIDCount
----------------------------------------
1 1:2,2:3
2 1:1,2:2
----------------------------------------
即字符串的格式是:
[ID]:[count(distinct(member)],...
我知道,你可以用兩個連續的group bys來解決這個問題(也就是說,首先在時間戳和ID上計數成員,在字符串連接上打開時間戳)。但是,我希望有一個更智能的解決方案,因爲我必須將它應用於大型數據集,並且不希望執行2組bys。我與Cloudera Impala一起工作,但其他SQL語言的解決方案也受到讚賞。
謝謝你的幫助。
參考:https://www.cloudera.com/documentation/enterprise/5-5-x/topics/impala_group_concat.html –