Sql server SQL server-替代在where子句中使用聚合

Sql server SQL server-替代在where子句中使用聚合,sql-server,aggregate-functions,where-clause,Sql Server,Aggregate Functions,Where Clause,我有一个场景,在这个场景中,我需要获得科目列表以及在这些科目中失败的学生总数。。然后我需要从上面得到20多名学生不及格的结果集,即20多名学生不及格的科目列表 Select SubjectId, Count(SubjectId) as StudentsFailed from tblResults group by SubjectId Having TotalMarks < 35 and Count(SubjectId) > 20 选择主体,将(主体)计数为学生失败 来自tblR

我有一个场景,在这个场景中,我需要获得科目列表以及在这些科目中失败的学生总数。。然后我需要从上面得到20多名学生不及格的结果集,即20多名学生不及格的科目列表

Select SubjectId, Count(SubjectId) as StudentsFailed 
from tblResults 
group by SubjectId
Having TotalMarks < 35 and Count(SubjectId) > 20
选择主体,将(主体)计数为学生失败
来自tblResults
按主体分组
总分<35且计数(主体)大于20

聚合在where子句中不起作用,我如何获取超过20名学生失败的科目

TotalMarks
的失败条件必须移动到
where
子句:

Select SubjectId, Count(SubjectId) as StudentsFailed 
from tblResults 
where TotalMarks < 35
group by SubjectId
Having Count(SubjectId) > 20
选择主体,将(主体)计数为学生失败
来自tblResults
其中TotalMarks<35
按主体分组
计数(主体)大于20
另外,如果有类似于
StudentId
的列,则在
Count()中使用它:

Count(StudentId)
或干脆
Count(*)
不在have中,只需添加此条件即可

WHERE column_name BETWEEN value1 AND value2;
>

选择主体,将(主体)计数为学生失败
来自tblResults
其中TotalMarks在20之间
受试者25组
--总分<35且计数(主体)大于20

假设TotalMarks是tblResults中的一个字段,您应该拆分TotalMarks和Count(SubjectId)上的条件

选择主体,将(主体)计数为学生失败
来自tblResults
其中TotalMarks<35
按主体分组
计数(主体)>20;
Select SubjectId, Count(SubjectId) as StudentsFailed  
from tblResults 
where TotalMarks between 20 
AND 25 group by SubjectId
--Having TotalMarks < 35 and Count(SubjectId) > 20
select SubjectId, Count(SubjectId) as StudentsFailed 
    from tblResults 
    where TotalMarks < 35
    group by SubjectId
    having count(SubjectId) > 20;