我试图从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迭代结果,但是当我使用名称作为键时,值被覆盖。
由于 安德鲁
答案 0 :(得分: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}]
答案 1 :(得分:-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.