gpt4 book ai didi

ruby-on-rails - 在 Ruby On Rails/PostgreSQL 中按日期对时间戳字段进行分组

转载 作者:行者123 更新时间:2023-11-29 13:35:29 24 4
gpt4 key购买 nike

我正在尝试将以下代码转换为与 PostgreSQL 一起使用。

在深入研究之后,我意识到 PostgreSQL 对于 GROUP BY 比 MySQL 更严格(以一种好的方式),但是对于我来说,我无法弄清楚如何重写这个语句来满足 Postgres 的要求。

def show
show! do
@recent_tasks = resource.jobs.group(:task).order(:created_at).limit(5)
end
end

PG::Error: ERROR: column "jobs.created_at" must appear in the GROUP BY clause or be used in an aggregate function
LINE 1: ...ND "jobs"."project_id" = 1 GROUP BY task ORDER BY created_at...
^
: SELECT COUNT(*) AS count_all, task AS task FROM "jobs" WHERE "jobs"."deleted_at" IS NULL AND "jobs"."project_id" = 1 GROUP BY task ORDER BY created_at DESC, created_at LIMIT 5

最佳答案

您不能按不在分组依据中的顺序使用列。
你可以做类似的事情

@recent_tasks = resource.jobs.group(:task, :created_at).order(:created_at).limit(5)

但它会改变结果

你也可以

@recent_tasks = resource.jobs.group(:task).order(:task).limit(5)

@recent_tasks = resource.jobs.group(:task).order('count(*) desc').limit(5)

关于ruby-on-rails - 在 Ruby On Rails/PostgreSQL 中按日期对时间戳字段进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13593381/

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