1

在 Rails 4.0 我有这个表,我想按 location_id 的出现次数对其进行排序。在这种情况下,最流行的 location_id 是 3。我想从所有带有 location_id: 3 的记录开始按降序对表进行排序。

表地理检查-

┌────┬─────────┬─────────────┬─────────────────────┬────────────────────┬─────────────────────┐
│ id │ user_id │ location_id │ message             │ created_at         │ updated_at          │
├────┼─────────┼─────────────┼─────────────────────┼────────────────────┼─────────────────────┤
│ 1  ╎ 14      ╎ 2           ╎ Test test t         ╎ 2013-07-23 13:3... ╎ 2013-07-23 13:37... │
│ 2  ╎ 12      ╎ 3           ╎                     ╎ 2013-07-23 13:5... ╎ 2013-07-23 13:54... │
│ 3  ╎ 15      ╎ 2           ╎ <html lang="en" ... ╎ 2013-07-25 08:5... ╎ 2013-07-25 08:57... │
│ 4  ╎ 12      ╎ 3           ╎ Ohohohooh           ╎ 2013-07-25 11:3... ╎ 2013-07-25 11:37... │
│ 5  ╎ 12      ╎ 3           ╎ Pff kjasakljdfas... ╎ 2013-07-25 11:3... ╎ 2013-07-25 11:37... │
│ 6  ╎ 15      ╎ 4           ╎                     ╎ 2013-07-25 13:5... ╎ 2013-07-25 13:54... │
│ 7  ╎ 13      ╎ 4           ╎ dasfdasfdasfdasf    ╎ 2013-07-25 14:3... ╎ 2013-07-25 14:30... │
│ 8  ╎ 13      ╎ 3           ╎                     ╎ 2013-07-25 14:3... ╎ 2013-07-25 14:30... │
│ 9  ╎ 13      ╎ 2           ╎ Test check message  ╎ 2013-07-25 14:3... ╎ 2013-07-25 14:31... │
│ 10 ╎ 13      ╎ 5           ╎ asdfdasfdasfdasfa   ╎ 2013-07-25 14:4... ╎ 2013-07-25 14:42... │
│ 11 ╎ 16      ╎ 7           ╎ Hohohooh            ╎ 2013-07-26 07:5... ╎ 2013-07-26 07:50... │
└────┴─────────┴─────────────┴─────────────────────┴────────────────────┴─────────────────────┘

我知道如何将它们计算为 ex.:Geochecks.where(location_id: 3).count #=> 4并考虑了一个循环,它将.where().count通过整个表执行请求,然后比较结果以找到最大的一个,但我很确定有一个更聪明的解决方案。

期望的输出:期望的输出应该是降序的location_id列表。在这种情况下,它应该是:3, 2, 4, 5, 7

4

2 回答 2

1

因此,正如我在评论中指出的那样,使用 SQL 进行操作会相当复杂,并且需要对 SQL 有很好的了解。但是我花了一点时间rails c在 Rails 中找到了一种方法!此查询的结果将是 Locations 而不是 Geochecks,但我认为这对您来说不是问题。

Location.joins(:geochecks).order('COUNT(geochecks.id) DESC').group('location.id')
于 2013-07-26T11:17:14.723 回答
-1

我认为它应该工作:

Table.find(:all, :order => "location_id_count DESC")
于 2013-07-26T10:43:40.283 回答