Ruby on rails 在两个表中获得最大值

Ruby on rails 在两个表中获得最大值,ruby-on-rails,mongodb,Ruby On Rails,Mongodb,我正在尝试从两个不同的表中获得特定用户的最高分数 例如: Table 1 {user=>"Dave", score=>8} {user=>"Dave", score=>2} {user=>"Frank", score=>5} Table 2 {user=>"Bill", score=>5} {user=>"Dave", score=>3} {user=>"Frank", score=>7} 我想要得到的结果是每个用户的最

我正在尝试从两个不同的表中获得特定用户的最高分数

例如:

Table 1
{user=>"Dave", score=>8}
{user=>"Dave", score=>2}
{user=>"Frank", score=>5}

Table 2
{user=>"Bill", score=>5}
{user=>"Dave", score=>3}
{user=>"Frank", score=>7}
我想要得到的结果是每个用户的最高分数,按分数降序排列

戴夫:8 弗兰克:7 比尔:5

我想也许我需要使用map/reduce,但我不太确定 我尝试使用散列来迭代结果,但当我使用名称作为键时,值被覆盖

谢谢
Andrew

下面是一个如何在Ruby端实现排序的示例:

> unsorted = [{:user=>"Bill", :score=>5}, {:user=>"Dave", :score=>3}, {:user=>"Frank", :score=>7}]
 => [{:user=>"Bill", :score=>5}, {:user=>"Dave", :score=>3}, {:user=>"Frank", :score=>7}]
> unsorted.sort_by { |r| r[:score] }.reverse
 => [{:user=>"Frank", :score=>7}, {:user=>"Bill", :score=>5}, {:user=>"Dave", :score=>3}]

您可以在sql查询中通过在name上连接两个表来实现这一点

SELECT
    CASE
        WHEN Table1.score >= Table2.score THEN Table1.score
        ELSE Table2.score
    END AS top_score, name
FROM Table1 join Table2 on Table1.name=Table2.name.