SQL сервер - альтернатива использованию агрегатов в предложении where - PullRequest
0 голосов
/ 09 января 2020

У меня есть сценарий, в котором мне нужно получить список предметов. И общее количество студентов, не сдавших экзамены по этим предметам. Затем мне нужно получить набор результатов из вышеприведенного, где более 20 студентов не смогли, т.е. список предметов, где более 20 студентов не смогли ...

Select SubjectId, Count(SubjectId) as StudentsFailed 
from tblResults 
group by SubjectId
Having TotalMarks < 35 and Count(SubjectId) > 20

Совокупность не работает в предложении где, как я могу выбрать предметы, где более 20 студентов не смогли

Ответы [ 3 ]

0 голосов
/ 09 января 2020

Нет в наличии, но просто добавьте это условие.

WHERE column_name BETWEEN value1 AND value2;

>

Select SubjectId, Count(SubjectId) as StudentsFailed  
from tblResults 
where TotalMarks between 20 
AND 25 group by SubjectId
--Having TotalMarks < 35 and Count(SubjectId) > 20
0 голосов
/ 09 января 2020

Предполагая, что TotalMarks является полем из tblResults, вы должны разделить условие на TotalMarks и Count (SubjectId).

select SubjectId, Count(SubjectId) as StudentsFailed 
    from tblResults 
    where TotalMarks < 35
    group by SubjectId
    having count(SubjectId) > 20;
0 голосов
/ 09 января 2020

Условие сбоя для столбца TotalMarks должно быть перемещено в условие WHERE:

Select SubjectId, Count(SubjectId) as StudentsFailed 
from tblResults 
where TotalMarks < 35
group by SubjectId
Having Count(SubjectId) > 20

Также, если есть столбец типа StudentId, используйте его внутри Count(): Count(StudentId) или просто Count(*).

...