如何在PostgreSQL的count函数中添加条件统计不同学生的课程订阅数
解决方法
你需要关联Subscription表拿到订阅对应的学生标识,再通过COUNT(DISTINCT)对同一学生的重复订阅去重计数即可,正确的查询语句如下:
SELECT sc.id_Course FROM Subscription_Course sc INNER JOIN Subscription s ON sc.idsubscription = s.idsubscription GROUP BY sc.id_Course HAVING COUNT(DISTINCT s.Student) > 1
逻辑说明
- 先通过内连接关联订阅中间表
Subscription_Course和订阅主表Subscription,获取每条订阅记录对应的学生ID - 按课程ID分组后,
COUNT(DISTINCT s.Student)会自动对同一课程下的重复学生ID去重,同一学生无论订阅多少次该课程,仅统计为1次 - 最后通过
HAVING条件过滤出订阅学生数大于1的课程ID
内容的提问来源于stack exchange,提问作者Tomás Oliveira
相关产品推荐
相关产品推荐

