SQL:GROUP BY与字符串数据

时间:2012-07-20 06:39:46

标签: sql string group-by

使用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"

4 个答案:

答案 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