ウィンドウ関数 レッスン5
FIRST_VALUE・LAST_VALUE
ウィンドウ内の先頭・末尾の値を取得する関数を学びます。
FIRST_VALUE・LAST_VALUEとは
FIRST_VALUE(col)はウィンドウの最初の行の値を、LAST_VALUE(col)はウィンドウの最後の行の値を返します。 LAST_VALUEはデフォルトのフレーム範囲(現在行まで)の影響を受けるため、 正確な末尾の値を得るにはフレーム句の指定が必要です。
FIRST_VALUE(col) OVER (ORDER BY col)— ウィンドウ先頭の値LAST_VALUE(col) OVER (... ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)— ウィンドウ末尾の値
例1: FIRST_VALUEで最高スコアを各行に表示
テーブル定義
CREATE TABLE students ( id INTEGER PRIMARY KEY, name TEXT NOT NULL, score INTEGER NOT NULL ); INSERT INTO students VALUES (1, '田中太郎', 85); INSERT INTO students VALUES (2, '鈴木花子', 92); INSERT INTO students VALUES (3, '佐藤一郎', 78); INSERT INTO students VALUES (4, '山田二郎', 88);
SQLエディタ
例2: 部門別の最初・最後の採用者
テーブル定義
CREATE TABLE employees ( id INTEGER PRIMARY KEY, name TEXT NOT NULL, department TEXT NOT NULL, hire_date TEXT NOT NULL ); INSERT INTO employees VALUES (1, '田中太郎', '営業部', '2018-04-01'); INSERT INTO employees VALUES (2, '鈴木花子', '開発部', '2019-07-15'); INSERT INTO employees VALUES (3, '佐藤一郎', '営業部', '2020-10-01'); INSERT INTO employees VALUES (4, '山田二郎', '開発部', '2017-01-10'); INSERT INTO employees VALUES (5, '伊藤花代', '営業部', '2022-04-01');
SQLエディタ
例3: LAST_VALUEにフレーム句を指定
テーブル定義
CREATE TABLE monthly_sales (
month TEXT PRIMARY KEY,
sales INTEGER NOT NULL
);
INSERT INTO monthly_sales VALUES ('2024-01', 100000);
INSERT INTO monthly_sales VALUES ('2024-02', 120000);
INSERT INTO monthly_sales VALUES ('2024-03', 115000);
INSERT INTO monthly_sales VALUES ('2024-04', 130000);SQLエディタ