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;
我有一个很大的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;