2013-10-25 73 views
0

我运行一个流行的开源LMS所谓的Moodle其背后都有一个MySQL数据库。我已经写了返回和我们所有的员工的列表,他们的成绩的9门必修课总称为IT策略课程功能查询。这个想法是,如果他们有一个900,我知道他们已经通过了所有9,700意味着他们已经完成了7,等等。以下是该查询。如何计算SUM的结果在MySQL

SELECT u.firstname AS 'First' , u.lastname AS 'Last', cc.name AS 'Category', 
ROUND(SUM(gg.finalgrade),0) AS Grade 
FROM prefix_course AS c 
JOIN prefix_context AS ctx ON c.id = ctx.instanceid 
JOIN prefix_role_assignments AS ra ON ra.contextid = ctx.id 
JOIN prefix_user AS u ON u.id = ra.userid 
JOIN prefix_grade_grades AS gg ON 
JOIN prefix_grade_items AS gi ON gi.id = gg.itemid 
JOIN prefix_course_categories AS cc ON cc.id = c.category 
WHERE gi.courseid = c.id AND cc.name = 'IT Policies' AND gi.itemtype = 'course' 
GROUP BY u.lastname,u.firstname 
ORDER BY grade 

我的问题是这样的。我想要一个总结报告,记录每个得分有多少人。例如102人有900 7人具有800,14人有700 0人有一个600,...,72人没有分数在所有等

此查询不除了得分和有多少人得分以外,还需要显示任何内容。我已经为此工作了几天,并采取了一些方法。尽管我似乎无法做到。任何帮助将非常感激!

谢谢你, Harvy

+0

呃,这不是您的查询。但无论如何,为什么“900” =“过去了9”,而不是,比方说,“9”? – Strawberry

回答

0

保存查询作为视图。然后在视图上运行SQL查询(如'marksheet'),如下所示:

SELECT Grade, COUNT(First) FROM marksheet GROUP BY Grade