0

我试图从 2 个不同的表中获得特定用户的最高分。

例子:

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,但我不太确定我是否尝试使用 Hash 来遍历结果,但是当我使用名称作为键时,值被覆盖了。

谢谢安德鲁

4

2 回答 2

2

这是一个如何在 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}]
于 2013-05-30T15:30:28.780 回答
-1

您可以通过在名称上连接两个表来在 sql 查询中执行此操作。

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.
于 2013-05-30T16:59:07.940 回答