我需要计算学生为给定的Moodle课程中的所有帖子输入的字符总数(以及每位学生的帖子总数)。我开始简单地使用只查看一个学生和一个课程的查询,并生成一个带有论坛消息的character_length的新列。它工作正常,但我必须手动统计列,我一次只与一个学生和一个课程一起工作。我的问题:
SELECT character_length(mdl_forum_posts.message) AS CHARS
FROM mdl_forum_posts, mdl_forum_discussions
WHERE mdl_forum_posts.userid = 1120
AND mdl_forum_posts.discussion = mdl_forum_discussions.id
AND mdl_forum_discussions.course = 181
我可以:
a)计算CHARS列,只获得单个查询中所有帖子的总数 要么 b)(甚至更好)在一个查询中为学生/课程组合列表执行此操作?
任何信息都非常感谢。这个表是postgres,但最终我必须在查询构建器中生成此代码,该构建器也适用于其他RDBMS。
答案 0 :(得分:0)
SELECT p.userid
,d.course
,SUM(character_length(p.message)) AS char_total
,COUNT(p.message) AS post_count
FROM mdl_forum_posts p
JOIN mdl_forum_discussions d ON (d.id = p.discussion)
GROUP BY p.userid, d.course
ORDER BY p.userid, d.course
;