0

我有一张大桌子,分为学年,

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,但我觉得必须有一种方法可以做到这一点?

4

1 回答 1

3

我相信 Ingres,您可以使用first

select first 1 sch_year_id
from t
group by sch_year_id
having count(*) > 5000
order by sch_year_id desc;
于 2016-08-15T20:05:33.057 回答