使用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 :(得分:2)
实际上,您不需要group by
distinct
可以完成此操作。
select distinct user_id,currency from your_table;
由于每行currency
有一个user
,因此不需要任何aggregate function
。
答案 1 :(得分:2)
演示 http://sqlfiddle.com/#!3/60ea7/5
DISTINCT和GROUP BY通常会生成相同的查询计划,因此两个查询结构的性能应该相同。应使用GROUP BY将聚合运算符应用于每个组。如果你只需要删除重复项,那么使用DISTINCT。如果您正在使用子查询,那么该查询的执行计划会有所不同,因此在这种情况下您需要先检查执行计划,然后再决定哪个更快。
答案 2 :(得分:1)
您是否有特殊原因要使用分组?
要获得相同的结果,您应该能够使用DISTINCT,例如
选择Distinct user_id,货币
答案 3 :(得分:1)
组bny所有列使其成为Distinct
select user_id,currency from your_table
Group by user_id,currency