我有一张大桌子,分为学年,
sch_year_id i4
name c20
addr1 c20
teacher c20
etc. etc..
sch_year_id 是一个整数,23 代表 13/14 学年,24 代表 14/15 等等。
因此,通常有数千条具有相同 sch_year_id 但针对不同孩子的记录。
我想知道包含最多记录的最新(即最大)sch_year_id,但仅限于该 sch_year_id 的记录数超过 5000 的情况。
我可以使用 GROUP BY 和 HAVING 获得此列表,如下所示
select sch_year_id, count(*)
from table
group by sch_year_id
having count(*) > 5000
这会返回大约 10 个结果,不同的学年,但我想要这个结果集的 max(sch_year_id)。如果我在 SELECT 的 sch_year_id 周围添加一个 max 函数,结果不会发生任何变化。
我可以使用派生表来完成,如下所示
select max(a.sch_year_id)
from (select sch_year_id, count(*)
from table
group by sch_year_id
having count(*) > 5000) a
或者使用 CTE,但我觉得必须有一种方法可以做到这一点?