Sql 查询以查找有多少学生注销
我需要写一个查询,看看有多少学生在第一节课后退学。如果学生在场,我们不会存储记录,因此我不能说学生是否在第一节课,是否有6个缺勤记录,我们有7个课日。我所拥有的只是下面模式中的信息。我写了一个查询,但它不起作用。我需要一些帮助,从这里开始 谢谢Sql 查询以查找有多少学生注销,sql,tsql,Sql,Tsql,我需要写一个查询,看看有多少学生在第一节课后退学。如果学生在场,我们不会存储记录,因此我不能说学生是否在第一节课,是否有6个缺勤记录,我们有7个课日。我所拥有的只是下面模式中的信息。我写了一个查询,但它不起作用。我需要一些帮助,从这里开始 谢谢 Select student_id, Count(*) AS #ofPerAbsent From Attend_Student_Detail where School_Year='1112' and School_Number
Select student_id, Count(*) AS #ofPerAbsent
From Attend_Student_Detail
where School_Year='1112' and School_Number='0031'
and Absent_Date='2012-04-13' and Absent_Code IN ('ABU','ABX')
Group by Student_ID
Having count(*)<=6
ORDER BY #ofPerAbsent desc
那么,您确定第一节课后退学的学生的标准是是否有缺勤代码或“ABU”或“ABX” 如果这个假设是正确的,那么您可以按如下方式查询,以获得符合该标准的每天学生人数
SELECT COUNT(DISTINCT(Student_ID))
FROM Attend_Student_Detail
WHERE Absent_Code IN ('ABU','ABX')
GROUP BY Absent_Date
如果愿意,可以在WHERE子句中进一步筛选到特定日期
顺便说一句,你的模式对我来说没有多大意义;因此,如果以上不是你想要的,请你再解释一下你的模式,我相信我能帮上忙。根据我收集的信息,你会想计算所有缺勤人数减去第一节课后的缺勤人数,所以我认为这样做应该可行
SELECT
A.student_id,
(Count(A.student_id) - B.absences_after) as absences
FROM
attend_student_detail as A
LEFT JOIN (
SELECT
Z.student_id,
Count(Z.student_id) as absences_after
FROM
attend_student_detail as Z
WHERE school_year='1112' AND school_number='0031'
AND absent_date='2012-04-13' AND absent_code IN ('ABU','ABX')
AND absent_period <> "period one"
GROUP BY Z.student_id
) as B
ON B.student_id = A.student_id
GROUP BY A.student_id;
我猜你的abu和abx都是无故缺席?如果他们注销,缺席时间是否反映了他们注销的时间?或者这是他们错过的时段数?如果这两种情况中的任何一种都是这样的话,那么您可能可以将该字段的关键帧设置为off。