Обнаружение проблемы при создании списка всех студентов, которые принадлежат к обоим специальностям, названным "CS" и "EE" - PullRequest
0 голосов
/ 20 апреля 2020
Create table Students(
S_id int Primary Key,
S_name varchar(100),
Gpa float ,
Size_hs int 
)

Create  table Apply (
s_id int ,
C_name varchar(100),
Major varchar(10),
Decision varchar(2)
)


insert into Students values (123,'Amy',3.9,1000)
insert into Students values (234,'Bob',3.6,1500)
insert into Students values (345,'Craig',3.5,500)
insert into Students values (456,'Doug',3.9,1000)
insert into Students values (567,'Edward',2.9,2000)
insert into Students values (678,'Fay',3.8,200)
insert into Students values (789,'Gray',3.4,800)
insert into Students values (987,'Helen',3.7,800)
insert into Students values (876,'Irene',3.9,400)
insert into Students values (765,'Jay',2.9,1500)
insert into Students values (654,'Amy',3.9,1000)
insert into Students values (543,'Craig',3.4,2000)


insert into Apply values (123,'NJIT','CS','Y')
insert into Apply values (123,'NJIT','EE','N')
insert into Apply values (123,'Stoony Brook','CS','Y')
insert into Apply values (123,'Cornell','EE','Y')
insert into Apply values (234,'Stoony Brook','Bio','N')
insert into Apply values (345,'WPI','Bio-Eng','Y')
insert into Apply values (345,'Cornell','Bio-Eng','N')
insert into Apply values (345,'Cornell','CS','Y')
insert into Apply values (345,'Cornell','EE','N')
insert into Apply values (678,'NJIT','Hist','Y')
insert into Apply values (987,'NJIT','CS','Y')
insert into Apply values (987,'Stoony Brook','CS','Y')
insert into Apply values (876,'NJIT','Bio','N')
insert into Apply values (876,'WPI','Marine-Bio','Y')
insert into Apply values (876,'WPI','Hist','N')
insert into Apply values (765,'NJIT','Hist','Y')
insert into Apply values (765,'Cornell','Hist','N')
insert into Apply values (765,'Cornell','Psych','Y')
insert into Apply values (543,'WPI','CS','N')

Это таблицы и данные вставки в таблицах. У меня проблемы с поиском данных, перечисленных выше в названии проблемы. В основном я должен найти список студентов, которые принадлежат к двум основным, названным «Cs» и «EE». Я попробовал это сам, но он не работает должным образом.

1 Ответ

0 голосов
/ 20 апреля 2020

Этот запрос:

select s_id 
from apply
where major in ('CS', 'EE')
group by s_id
having count(distinct major) = 2

возвращает s_id учеников, которых вы хотите. Вы можете использовать его для фильтрации таблицы students:

select * from students 
where s_id in (
  select s_id 
  from apply
  where major in ('CS', 'EE')
  group by s_id
  having count(distinct major) = 2
)

См. Демоверсию . Результаты:

> S_id | S_name | Gpa | Size_hs
> ---: | :----- | --: | ------:
>  123 | Amy    | 3.9 |    1000
>  345 | Craig  | 3.5 |     500
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...