2012-07-20 53 views
0

使用GROUP BY時,什麼樣的聚合函數對字符串起作用?SQL:使用字符串數據的GROUP BY

我通常會GROUP BY user_id,但我不確定什麼聚合函數可以在字符串上工作。

目標是讓貨幣每USER_ID爲一行:

user_id currency 

12341235 "USD" 
12341235 "USD" 
12341235 "USD" 
12341235 "USD" 
05945949 "EURO" 
05945949 "EURO" 
05945949 "EURO" 
99910277 "USD" 
99910277 "USD" 
99910277 "USD" 

成品數據:

user_id currency 

12341235 "USD" 
05945949 "EURO" 
99910277 "USD" 
+0

我在示例中使用了日期,但類型存儲爲STRING,並且由於數據庫(Hive)的原因,無法將其轉換爲日期類型。 – 2012-07-20 06:40:57

回答

2

演示 http://sqlfiddle.com/#!3/60ea7/5

一個獨特的和GROUP BY通常會產生相同的查詢計劃,所以性能應該是在兩個查詢構造相同。應使用GROUP BY將聚合運算符應用於每個組。如果您只需刪除重複項,則使用DISTINCT。如果您使用子查詢執行計劃對於該查詢會有所不同,那麼您需要在決定執行計劃更快之前檢查執行計劃。

+0

@ downvoter:comment pls .. – 2013-05-04 07:44:21

1

有你爲什麼要通過使用組特別的理由?

爲了得到相同的結果,您應該可以使用DISTINCT

SELECT DISTINCT USER_ID,貨幣

2

其實,你並不需要group by它可以通過distinct完成。

select distinct user_id,currency from your_table; 

當你有相同的currency在每行一個user,這裏不需要任何aggregate function的。

1

集團BNY所有列使其鮮明

select user_id,currency from your_table 
Group by user_id,currency