询问某个房间的某些学生

时间:2014-07-28 16:30:46

标签: sql oracle

我正在处理一个问题,使用SQL Oracle。出于某种原因,我得到了13个教学结果的教学结果,当时我应该只有1个。只有1个教练只能在那个教室里教3个或更多的学生。

问题:

创建一个查询,以确定在L211室教授的课程中教授3名以上学生的教师人数。

我的代码:

SELECT COUNT(Instructor_Id) AS NumberOfInstructors
FROM Section s, Enrollment e
WHERE s.Section_Id = e.Section_Id
  AND Location = 'L211'
HAVING COUNT(Student_Id) = 
(SELECT COUNT(Student_iD)
FROM Section s, Enrollment e
WHERE s.Section_Id = e.Section_Id
 AND Location = 'L211')
ORDER BY s.Course_No;

我的结果:

NUMBEROFINSTRUCTORS   
-------------------   
13           

预期结果:

NUMBEROFINSTRUCTORS   
-------------------   
1

所以我觉得我可能没有朝着正确的方向前进,但我觉得它正在增加在该课程中教授的所有教师。如果有人能指出我正确的方向,那么我已经用我已经给出的代码搞砸了很多。我猜我需要计算一下那些已经上过那个房间号的学生,我想我已经尝试了这个并得到了4的结果,所以我不确定。

任何帮助都会很棒,here is the Schema

DBMS:我使用的是Oracle SQL Developer

3 个答案:

答案 0 :(得分:1)

试试这个:

SELECT COUNT(*) NumberOfInstructors
From (Select Instructor_Id
      FROM Section s
          join Enrollment e
                on e.Section_Id = s.Section_Id 
      WHERE s.Location = 'L211'
      Group By Instructor_Id
      HAVING COUNT(Student_Id) >= 3) Z

答案 1 :(得分:0)

我认为你需要一个子查询。在伪代码中,您正在寻找类似的查询:

SELECT count(teachers)
FROM
  (SELECT count(students) FROM enrollment where location='L211') AS "numberofstudents"
WHERE numberofstudents > 3

答案 2 :(得分:0)

没有测试代码,但在我看来你错过了一个条件。您的问题要求您找到“在该房间只教3个或更多学生的教师”,但您没有任何条件来检查学生编号>试试这个:

SELECT COUNT(Instructor_Id) AS NumberOfInstructors
FROM Section s, Enrollment e
WHERE s.Section_Id = e.Section_Id
AND Location = 'L211'
HAVING COUNT(Student_Id) = 
(SELECT COUNT(Student_iD)
FROM Section s, Enrollment e
WHERE s.Section_Id = e.Section_Id
AND Location = 'L211' AND COUNT(Student_Id) > 3)
ORDER BY s.Course_No;