PostgreSQL:打印学生姓名,该课程的研究生人数超过本科生
我正试图写一个PostgreSQL,却犯了一个可怕的错误 我需要打印学生的姓名,并且该课程的研究生人数超过本科生PostgreSQL:打印学生姓名,该课程的研究生人数超过本科生,sql,postgresql,Sql,Postgresql,我正试图写一个PostgreSQL,却犯了一个可怕的错误 我需要打印学生的姓名,并且该课程的研究生人数超过本科生 从个人p中选择p.name加入课程c on(p.Course=c.id)按p.code加入学生s on(c.st_info=s.id)分组,p.name有count(s.type='undergrad')>count(s.type='postgrad')您可以使用如下逻辑识别课程: select c.id from Course c join Student s
从个人p中选择p.name加入课程c on(p.Course=c.id)按p.code加入学生s on(c.st_info=s.id)分组,p.name有count(s.type='undergrad')>count(s.type='postgrad')代码>您可以使用如下逻辑识别课程:
select c.id
from Course c join
Student s
on c.st_info = s.id
group by c.id
having sum( (s.type = 'postgrad')::int ) > sum( (s.type = 'undergrad')::int );
我会让你弄清楚如何让学生们真正参加课程
注:
- 您在
中的逻辑与相反。这是一个相当基本的错误
count()
统计非空值的数量。布尔表达式可能总是非空的,因此它们将返回相同的值sum()
就是您想要的课程
有学生id?为什么person
有课程id这听起来像是两个问题,一个是列出学生,一个是计数。不,我只需要打印出修过这门课的人的名字,而这门课的研究生比本科生多。你能提供一些样本数据并期望得到结果吗?我明白了。我认为您需要向我们展示这3张表的表结构。我很难理解人与学生之间的关系非常感谢大家。戈登能够弄明白。请参考答案以供参考。不过我做了一点改变。我喜欢另一张桌子。就这些,谢谢!这真的很有帮助。这是一个用于实践目的的虚拟数据。我现在正在学习如何获取数据。