mysql syntax error when trying to capture cumulative sum

Hey all,

I've searched the web and cannot find an example of getting a cumulative
count by month for a specific object using Rails, and then displaying
that in an array. This gives a mysql syntax error:

    count = Student.count("SELECT
        x1.MonthNo
      , x1.MonthName
      , x1.Added
      , SUM(x2.Added) AS RunningTotal
      FROM
      (
      SELECT
        MONTH(passed_on) AS MonthNo
      , MONTHNAME(passed_on) AS MonthName
      , COUNT(*) AS Added
      FROM students
      WHERE passed_on >= '2009-09-23'
      GROUP BY MONTH(passed_on)
      ) AS x1
      INNER JOIN (
      SELECT
        MONTH(passed_on) AS MonthNo
      , MONTHNAME(passed_on) AS MonthName
      , COUNT(*) AS Added
      FROM students
      WHERE passed_on >= '2009-09-23'
      GROUP BY MONTH(passed_on)
      ) AS x2
      ON x1.MonthNo >= x2.MonthNo
      GROUP BY x1.MonthNo;")

def panels
                  :series => [{
                      :name => 'Passed',
                      :data => count
                  }
end

The idea is to show the cumulative sum over several months which will be
displayed in a chart. Thanks for any response.

count is expecting a rather simpler situation. If you're supplying a
full sql statement you should use count_by_sql (and you might actually
want to use connection.select_all in this case).

Fred

Frederick Cheung wrote:

Hey all,

I've searched the web and cannot find an example of getting a cumulative
count by month for a specific object using Rails, and then displaying
that in an array. This gives a mysql syntax error:

count is expecting a rather simpler situation. If you're supplying a
full sql statement you should use count_by_sql (and you might actually
want to use connection.select_all in this case).

Fred

Initially, I felt this would be more efficient:

def sum
   a = Student.passed_on
   a.inject(0) { |s,v| s += v }

  end

But this gives me undefined method "passed_on" and undefined method
"inject".