有表格FACULTIES(F_NUMB,F_NAME,F_TELEF)和学生(S_NUM,SURNAME,SPECIALTY,GROUP,FACULTY_NUMB)。 请编写SQL查询以获得学生名称,其中学生人数大于教师“计算机科学”。
这就是我正在做的事情:
select faculties.f_name, count(STUDENTS.S_NUM) from STUDENTS, FACULTIES
where students.fac_num=FACULTIES.F_NUMB group by faculties.f_name
having count(STUDENTS.S_NUM) > (select STUDENTS.S_NUM from STUDENTS, FACULTIES
where faculties.f_name='Computer Science' and students.fac_num=faculties.f_numb);
但它仍然没有用。请帮帮我..
答案 0 :(得分:0)
with
VW_FACULTIES as
( SELECT f.*,
( SELECT COUNT(*)
FROM STUDENTS s
WHERE s.fac_num = f.f_numb) AS StudentCount
FROM FACULTIES f)
SELECT
*
FROM
VW_FACULTIES f
WHERE
f.StudentCount > ( SELECT StudentCount
FROM VW_FACULTIES
WHERE f_name='Computer Science')
答案 1 :(得分:0)
试试这个:
SELECT f.f_name
FROM faculties f
WHERE (SELECT COUNT(1) -- Here we get the student count for the faculty
FROM students s
WHERE f.f_numb = s.faculty_numb) >
(SELECT COUNT(1) -- Here we get the CS faculty student count
FROM students s JOIN faculties f ON (f.f_numb = s.faculty_numb)
WHERE f.f_name = 'Computer science');
对于每一行,您要检查教师有多少学生,并将其与学生数量进行比较"计算机科学"教师有。