Подсчет с более чем одним условием для одного столбца - PullRequest
0 голосов
/ 18 мая 2018

Я хочу посчитать количество sids, которые посещают 2 конкретных курса (crn). Я могу отобразить указанные sids, но по какой-то причине я не могу их подсчитать.

Я хочу отобразить количество студентов, которые принимаютcrn = 12345 и crn = 20976

вот моя таблица

  sid  |  crn  | grade
 12321 | 12345 |   A
 12321 | 20976 |   B
 21008 | 12345 |   C
 21008 | 20976 |   A
 21008 | 28469 |   D
 21090 | 12345 |   C
 21090 | 20976 |   F

вот код, который работает

 select sid from takes where crn in (12345 , 20976 ) group by sid HAVING COUNT(*) = 2

вот коды, которые я пробовал

 select count(sid) from takes where crn in (12345 , 20976 ) group by sid HAVING COUNT(*) = 2

 select sid, count(sid) from takes where crn in ( '12345', '20976') GROUP By sid HAVING count(*) > 1

 select count(sid) from takes where (select sid from takes where crn in ( '12345', '20976') GROUP By sid HAVING count(*) > 1 )

 select sid, count(sid) from takes where (select sid from takes where crn in ( '12345', '20976') HAVING count(*) > 1 ) GROUP BY sid

Итак, вот мой вопрос, как я могу заставить эту вещь работать?Я имею в виду, как трудно для некоторого кода сосчитать вещи, которые он может отобразить, и отобразить это число

1 Ответ

0 голосов
/ 18 мая 2018

Вам нужен подзапрос:

select count(*)
from (select sid
      from takes
      where crn in (12345 , 20976 )
      group by sid 
      having count(*) = 2
     ) s;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...