gpt4 book ai didi

ruby-on-rails - Rails Postgres GROUP 所有专栏

转载 作者:行者123 更新时间:2023-11-29 12:27:10 26 4
gpt4 key购买 nike

你必须 GROUP BY 在 Postgres 中你选择的所有列,否则它会生你的气。除了列出所有列之外,是否有一种简单/干净的方法来执行此操作?

我想到的最好的是以下内容(意图已注释):

# The purpose of this query is to return a list of `User`s
# ordered by the number of `Account`s they have in descending order.

User.joins(:accounts)
.group(User.full_column_names)
.order('COUNT("accounts".*) DESC')

来自user.rb:

def self.full_column_names
column_names.collect {|name| "\"#{table_name}\".\"#{name}\"" }
end

最佳答案

找到拥有最多帐户的用户的一种方法:

user_id, number_of_accounts = Account.group(:user_id).count.max_by{ |key, value| value}
user_with_most_accounts = User.find(user_id)

让它成为一个查询:

user_with_most_accounts = User.find(Account.group(:user_id).count.max_by{ |key, value| value}[0])

注意:这只会找到一个用户,即使多个用户拥有相同数量的帐户也是如此。

关于ruby-on-rails - Rails Postgres GROUP 所有专栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27864438/

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