gpt4 book ai didi

ruby - 在 PostgreSQL 中按指定列分组

转载 作者:太空宇宙 更新时间:2023-11-03 17:58:51 24 4
gpt4 key购买 nike

也许,这个问题有点傻,但我很困惑。

如何按指定列对记录进行分组? :)

Item.group(:category_id)

不工作...

它说:

ActiveRecord::StatementInvalid: PGError: ERROR: column "items.id" must appear in the GROUP BY clause or be used in an aggregate function LINE 1: SELECT "items".* FROM "items" GROUP BY category_id

我应该使用什么样的聚合函数?

请您提供一个简单的示例。

最佳答案

您必须定义如何对共享相同 category_id 的值进行分组。连接它们?计算总和?

要创建以逗号分隔的值列表,您的语句可能如下所示:

SELECT category_id
,string_agg(col1, ', ') AS col1_list
,string_agg(col2, ', ') AS col2_list
FROM items
GROUP BY category_id

string_agg(col1, ', ') 需要 Postgres 9.0 或更高版本.在旧版本中,您可以用 array_to_string(array_agg(col1), ', ') 代替。更多聚合函数here .

与在客户端中聚合值相比,在 PostgreSQL 中聚合值显然是更好的方法。 Postgres 在这方面非常快并且它减少了(网络)流量。

关于ruby - 在 PostgreSQL 中按指定列分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8575740/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com