首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PostgreSQL:打印学生的姓名和研究生的人数超过了该课程的本科生

PostgreSQL:打印学生的姓名和研究生的人数超过了该课程的本科生
EN

Stack Overflow用户
提问于 2018-04-14 11:26:39
回答 1查看 58关注 0票数 0

我正试图写一个PostgreSQL,却出了严重的错误。

我需要打印学生的名字,而研究生的人数比本科的人数还要多。

select p.name from Person p join Course c on (p.course=c.id) join Student s on (c.st_info=s.id) group by p.code,p.name having count(s.type='undergrad') > count(s.type='postgrad');

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-14 11:53:02

您可以使用这样的逻辑来标识课程:

代码语言:javascript
复制
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 );

我会让你想办法让那些实际在课程里的学生。

备注:

  • 你在having中的逻辑被颠倒了。这是一个相当基本的错误。
  • count()计数非空值的数量。布尔表达式可能总是非空的,因此它们将返回相同的值。sum()是你想要的。
  • 您的数据模型没有真正的意义。为什么course有学生身份证?为什么person有一个课程标识?
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49830922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档