【问题标题】:postgres concat in group by分组中的postgres concat
【发布时间】:2012-08-21 19:30:32
【问题描述】:

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

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

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

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

【问题讨论】:

  • 您收到的错误信息是什么?

标签: postgresql group-by concat


【解决方案1】:

这会起作用,只是您需要选择分组依据的表达式:

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

第二个选项可能就是你的意思。

【讨论】:

  • 哇,谢谢一百万!这似乎是我一直在寻找的。我都试过了,你写的这两个不完全一样。区别在于:第一次选择,将名称和昵称输出为两个列。您的第二个示例将名称和昵称 coloum 合并为一个 coloum。如果是这样,这正是我想要的:)
  • @tBook:这也是一个很小的区别,但不是我指的那个。我的意思是,我显示的两行最终在第二个查询的不同组中,但在第一个查询的同一组中。如果名称或昵称中不能有空格,那么这不是问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-02-17
  • 2021-05-27
  • 1970-01-01
  • 2015-02-06
  • 1970-01-01
  • 2010-12-11
  • 1970-01-01
相关资源
最近更新 更多