Sql 在rails 3.1中将子查询用作表
我正在尝试从另一个查询中选择一些数据。 SQL将如下所示:Sql 在rails 3.1中将子查询用作表,sql,ruby-on-rails,ruby-on-rails-3,activerecord,subquery,Sql,Ruby On Rails,Ruby On Rails 3,Activerecord,Subquery,我正在尝试从另一个查询中选择一些数据。 SQL将如下所示: SELECT user_id, rank FROM (SELECT user_id, MAX(created_at) as latest_solution, COUNT(*) AS solved, rank() OVER (ORDER by COUNT(*) desc) AS rank FROM submissions group by user_id) as leaderboard WHERE leaderboard.user_i
SELECT user_id, rank FROM
(SELECT user_id, MAX(created_at) as latest_solution, COUNT(*) AS solved,
rank() OVER (ORDER by COUNT(*) desc) AS rank FROM submissions group by user_id)
as leaderboard WHERE leaderboard.user_id = xx
但我很难把它翻译成activerecord语言
我认为我对以下子查询没有问题:
Submission.select('user_id, MAX(created_at) as latest_solution, COUNT(*) as solved, rank() OVER (ORDER BY count(*) desc) as rank').group('user_id')
但我不知道如何将其用作“表格”。对于任何非琐碎的事情,我都会直截了当地说:
Submission.find_by_sql(%q{
select user_id,
rank
from (
select user_id,
max(created_at) as latest_solution,
count(*) AS solved,
rank() over (order by count(*) desc) as rank
from submissions
group by user_id
) as leaderboard
where leaderboard.user_id = :user_id
}, :user_id => 'xx')
在Submission
上用class方法包装它,您应该会没事的