我需要在多个学校中选择最大、最近或当前活跃的学期,假设一所学校可能有多个并发学期(即,一个学期注册荣誉学生,另一个学期注册非荣誉学生)。还需要考虑结束日期,因为荣誉学期可能有相同的开始日期,但可能是一年而不是一个学期,我想要这个学期。
代码看起来像这样:
SELECT t.school_id, t.term_id, COUNT(s.id) AS size, t.start_date, t.end_date
FROM term t
INNER JOIN students s ON t.term_id = s.term_id
WHERE t.school_id = (some school id)
GROUP BY t.school_id, t.term_id
ORDER BY t.start_date DESC, t.end_date ASC, size DESC LIMIT 1;
这可以完美地找到当前或最近活跃的最大术语,但我希望能够消除该WHERE t.school_id = (some school id)
部分。
每组的标准最大 n 可以轻松选择最大的或最近的学期,但我需要选择以最多学生人数最快结束的最近学期。