【发布时间】:2018-02-13 10:29:43
【问题描述】:
我在 mysql 方面不是很有经验,所以我希望我的问题不是太愚蠢,并且代码行或多或少是可读的。 以下 mysql 查询提供了一组学生在小组作业中产生的特定内容的数量。
SELECT
access_collections.id AS "Group ID",
access_collections.name AS "Group",
SUM(CASE WHEN system_log.object_subtype="blog" AND system_log.event="create" THEN 1 ELSE 0 END) AS "Number of blog entries",
SUM(CASE WHEN system_log.object_subtype="comment" AND system_log.event="create" THEN 1 ELSE 0 END) AS "Number of comments",
SUM(CASE WHEN system_log.object_subtype="discussion_reply" AND system_log.event="create" THEN 1 ELSE 0 END) AS "Number of discussion replies",
SUM(CASE WHEN system_log.object_subtype="chat_message" AND system_log.event="create" THEN 1 ELSE 0 END) AS "Number of chat messages",
SUM(CASE WHEN system_log.object_subtype="file" AND system_log.event="create" THEN 1 ELSE 0 END) AS "Number of uploaded files",
SUM(CASE WHEN system_log.object_subtype="messages" AND system_log.event="create" THEN 1 ELSE 0 END) AS "Number of messages",
FROM system_log
INNER JOIN access_collection_membership ON access_collection_membership.user_guid=system_log.performed_by_guid
INNER JOIN access_collections ON access_collections.id=access_collection_membership.access_collection_id
GROUP BY access_collections.id
现在我想获取所有这些类型内容的平均数量。 AVG() 对我不起作用,所以我想我可以将内容总和除以组成员的数量。
获取每个组的成员的查询是这样的
SELECT access_collections.id, COUNT(access_collection_membership.user_guid)
FROM access_collection_membership
INNER JOIN access_collections ON access_collections.id=access_collection_membership.access_collection_id
GROUP BY access_collections.id
我知道我的 SUM()-Function 应该替换为 COUNT()-Function,但经过几个小时的尝试后它对我不起作用。 如果有人可以帮助我,我会很高兴:) 如果您需要更多信息,请告诉我。
【问题讨论】: