我正在使用SQL +,在查询多个表时遇到问题,同时比较计数值。
例如,
我想知道高中考试超过5门考试的学生姓名和身份证号码。学生姓名&& ID#存储在STUDENT表中,而考试数量和学生ID#存储在EXAM表中。
查询“参加考试超过5项的学生姓名和身份证”的最佳方法是什么?
我在ORACLE和SQLPLUS工作。
由于
答案 0 :(得分:0)
在按STUDENT_ID分组的考试表上使用COUNT(*)来查找每个学生参加的考试数量。 HAVING子句将过滤器应用于聚合,因此我们只获得参加过五次以上考试的学生。
这提供了一个子查询,我们可以使用它来过滤主学生表。
select s.name, s.student_id
from student s
where s.id in
( select e.student_id
from exam e
group by e.student_id having count(*) > 5 )
我写了所有这些,然后我重新阅读了你的问题,也许它就像:
select s.name, s.student_id
from student s
join exam e
on e.student_id = s.student_id
where e.no_of_exams > 5
很难说。当问题框架不好时。