Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 对某个房间里某些学生的询问_Sql_Oracle - Fatal编程技术网

Sql 对某个房间里某些学生的询问

Sql 对某个房间里某些学生的询问,sql,oracle,Sql,Oracle,我正在解决一个问题,使用SQL Oracle。出于某种原因,我得到了13分,而我本应该只得到1分,但教授该课程的讲师却得到了13分。教室里只有一名教师只教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_I

我正在解决一个问题,使用SQL Oracle。出于某种原因,我得到了13分,而我本应该只得到1分,但教授该课程的讲师却得到了13分。教室里只有一名教师只教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
创建一个查询,以确定在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
我的结果:

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
预期结果:

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,所以我不确定

任何帮助都会很好


DBMS:我正在使用Oracle SQL Developer

我想这里需要一个子查询。在伪代码中,您正在查找如下查询:

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

我没有测试代码,但在我看来,您缺少了一个条件。您的问题要求您找到“仅在该教室教授3名或3名以上学生的讲师”,但您没有任何条件检查学号>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;
试试这个:

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

所以,这是家庭作业,对吗?这是家庭作业,但他做了正确的事情,他“先尝试”,并做了自己的研究。是的,但其他人呢,他们只需谷歌一下就可以找到答案。对该问题的引用搜索将返回此结果作为第一个结果。这一个成功了,我看到我做错了什么,在这个示例中,HAVING COUNT(Student_Id)>=3)需要大于3。它显示的结果是4,而不是1,因为等号fyi