Ingres 中的多个聚合 SQL

Multiple aggregates in Ingres SQL

我有一个很大的table,分为学年,

sch_year_id i4
name c20
addr1 c20
teacher c20

etc. etc..

sch_year_id是一个整数,23代表13/14学年,24代表14/15等等等

因此,通常有数千条具有相同 sch_year_id 但不同 children 的记录。

我想知道包含最多记录的最近(即最大值)sch_year_id,但仅针对 sch_year_id 的记录数超过 5000 的情况。

我可以使用 GROUP BY 和 HAVING 获得 this 的列表,如下所示

select sch_year_id, count(*)
from table
group by sch_year_id
having count(*) > 5000

这return大约10个结果,不同的学年,但我想要这个结果集的max(sch_year_id)。如果我在 SELECT 周围添加一个最大函数 sch_year_id,结果没有任何变化。

我可以使用派生的 table 来完成,如下所示

select max(a.sch_year_id)
from (select sch_year_id, count(*)
from table
group by sch_year_id
having count(*) > 5000) a

或者使用 CTE,但我觉得没有它一定有办法做到这一点?

我相信 Ingres,你可以使用 first:

select first 1 sch_year_id
from t
group by sch_year_id
having count(*) > 5000
order by sch_year_id desc;