Oracleでグループ化した後、各グループの最初のデータを取得する方法は何ですか?

Oracleでは、グループ関数とサブクエリを使用して、各グループの最初のデータを取得することができます。

仮定して、「table_name」という名前のテーブルがあり、「column1」と「column2」という2つのフィールドがあるとします。私たちは「column1」でグルーピングし、各グループの最初のデータを取得したいです。

以下のクエリ文を使用することができます:

SELECT column1, column2
FROM (
    SELECT column1, column2, ROW_NUMBER() OVER (PARTITION BY column1 ORDER BY column2) AS rn
    FROM table_name
) t
WHERE rn = 1;

このクエリは、ROW_NUMBER()ウィンドウ関数を使用して、各グループのレコードに連番(rn)を追加し、「column2」に基づいて並べ替えます。次に、外部クエリでrnが1と等しいレコードを選択し、各グループの最初のデータを取得します。

この方法はOracle 12c以上のバージョンに適用されます。それよりも古いバージョンを使用している場合、他の方法を使用する必要があるかもしれません。

bannerAds