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 に答える