我可以计算同一查询中计算字段的总和吗?

时间:2017-05-07 22:42:39

标签: postgresql calculated-columns

我需要计算学生为给定的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。

1 个答案:

答案 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
  ;