Sql 查询以查找有多少学生注销

Sql 查询以查找有多少学生注销,sql,tsql,Sql,Tsql,我需要写一个查询,看看有多少学生在第一节课后退学。如果学生在场,我们不会存储记录,因此我不能说学生是否在第一节课,是否有6个缺勤记录,我们有7个课日。我所拥有的只是下面模式中的信息。我写了一个查询,但它不起作用。我需要一些帮助,从这里开始 谢谢 Select student_id, Count(*) AS #ofPerAbsent From Attend_Student_Detail where School_Year='1112' and School_Number

我需要写一个查询,看看有多少学生在第一节课后退学。如果学生在场,我们不会存储记录,因此我不能说学生是否在第一节课,是否有6个缺勤记录,我们有7个课日。我所拥有的只是下面模式中的信息。我写了一个查询,但它不起作用。我需要一些帮助,从这里开始

谢谢

    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。