SQL Server でウィンドウ関数を使い,1行前の行を取得するではウィンドウ関数を用いて1行前の行を取得した.今回は RANK 関数,NTILE 関数を用いて順位,四分位を得る.
テーブル定義
テーブル定義は以下の通りである.
CREATE TABLE [dbo].[Temperature]( [年月日] [date] NOT NULL, [都道府県] [nvarchar](50) NOT NULL, [日別最高気温] [float] NOT NULL, [都道府県コード] [nvarchar](2) NOT NULL ) ON [PRIMARY] GO
クエリ
下記クエリを発行して結果を得る.
USE EMERGENCYDB; GO SELECT * , RANK() OVER(PARTITION BY 都道府県コード ORDER BY 日別最高気温 DESC) AS 'RANK' , NTILE(4)OVER(PARTITION BY 都道府県コード ORDER BY 日別最高気温 DESC) AS 'QUARTILE' FROM dbo.Temperature
結果
最初の 10 行のみ結果を表示する.都道府県ごとに日別最高気温のランキングを行っている.
年月日 都道府県 日別最高気温 都道府県コード RANK QUARTILE 2017-07-14 北海道 34.9 1 1 1 2015-08-05 北海道 34.5 1 2 1 2020-08-19 北海道 34.3 1 3 1 2019-08-02 北海道 34.2 1 4 1 2019-05-27 北海道 34.2 1 4 1 2010-08-30 北海道 34.1 1 6 1 2018-07-31 北海道 33.9 1 7 1 2011-08-11 北海道 33.8 1 8 1 2014-06-04 北海道 33.7 1 9 1 2019-07-30 北海道 33.5 1 10 1