【问题标题】:using subquery as a table on rails 3.1在 Rails 3.1 上使用子查询作为表
【发布时间】:2012-02-21 19:18:45
【问题描述】:

我正在尝试从另一个查询中选择一些数据。 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_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')

但我不知道如何将其用作“表格”。

【问题讨论】:

    标签: sql ruby-on-rails ruby-on-rails-3 activerecord subquery


    【解决方案1】:

    我直接去find_by_sql 询问任何重要的事情:

    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 上的类方法中,您应该没问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-12
      • 2012-06-27
      • 1970-01-01
      相关资源
      最近更新 更多