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.
On Apr 6, 12:19 am, John M. [email protected] 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
Frederick C. wrote:
On Apr 6, 12:19�am, John M. [email protected] 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”.