Sql server SQL server-替代在where子句中使用聚合
我有一个场景,在这个场景中,我需要获得科目列表以及在这些科目中失败的学生总数。。然后我需要从上面得到20多名学生不及格的结果集,即20多名学生不及格的科目列表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
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;