postgres concat in group by

时间:2012-08-21 19:30:32

标签: postgresql group-by concat

关于Postgresql选择的一个问题。这可以正常工作:

SELECT 
  name,SUM(cash)
FROM 
  costumers
GROUP BY (name)

但是如何在GROUP BY子句中连接两个(或更多)字段? 这就是我试过的:

SELECT 
  name,SUM(cash)
FROM 
  costumers
GROUP BY (name || ' ' || nickname)

1 个答案:

答案 0 :(得分:2)

除非你需要选择你所分组的表达式,否则这将有效:

SELECT 
    (name || ' ' || nickname) AS name_and_nickname,
    SUM(cash) AS total_cash
FROM costumers
GROUP BY (name || ' ' || nickname)

另一种选择是通过用逗号分隔两个字段来分组:

SELECT 
    name, nickname, SUM(cash) AS total_cash
FROM costumers
GROUP BY name, nickname

请注意,这两个完全等效。特别是这两行最终将与第一个版本位于同一组中,并在第二个版本中位于不同的组中:

name    | nickname  | cash
--------+-----------+----
foo     | bar baz   | 10
foo bar | baz       | 20

第二种选择可能就是你的意思。