【问题标题】:Return the Record with the highest count of reference ids Active Record返回引用 ID 数最高的记录 Active Record
【发布时间】:2018-11-20 17:28:33
【问题描述】:

找出工程师人数最多的国家

工程师有一个 country_id 引用表国家,我通过猜测和检查找到了答案,但我很想知道如何返回一个工程师人数最多的国家,我一直现在寻找将近 24 小时...请帮助

country = Country.find(34);
  country.engineers.count;
  => 9.

到目前为止,这就是我得到的

【问题讨论】:

标签: sql ruby-on-rails postgresql activerecord many-to-many


【解决方案1】:

我相信在 sql 上会是这样的:

SELECT countries.*, COUNT(*) AS engineersCount FROM countries
INNER JOIN engineers ON engineers.country_id = countries.id
GROUP BY countries.id
ORDER BY engineersCount DESC
LIMIT 1

使用 AR 稍微改变了适应:

Country.joins(:engineers).group('countries.id').order('COUNT(*) DESC').limit(1)

参考:

Can I do a max(count(*)) in SQL?

How to find the highest number of times a value is in records?

【讨论】:

  • 哇,非常感谢你,我完全会在这项工作的代码挑战中失败,因为这是第一个问题,但是从复杂的查询中得到一个答案会让人松一口气。跨度>
  • @ChristopherDucote 有一个很棒的网站可以提高你的 sql 技能,叫做pgexercises.com。试试看
猜你喜欢
  • 1970-01-01
  • 2017-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-16
  • 2013-02-22
  • 1970-01-01
相关资源
最近更新 更多