SQL Tips

 

[SQL Server] 順位付け関数「ROW_NUMBER」について

MS-SQL / SQL Server
順位付け関数「ROW_NUMBER」について

SQL SERVER 2005から使える順位付け関数「ROW_NUMBER」!
良く使われる関数ですので、良く覚えておきましょう~~

では、テストの為にテーブルを作成してテストデータを登録しましょう。

--#### テーブル作成
CREATE TABLE dbo.TempData
(
Company tinyint
,UserName nvarchar(10)
,Score int
)

--#### テストデータ作成
INSERT INTO dbo.TempData (Company, UserName, Score)
SELECT 1, N'鈴木', 85 UNION ALL
SELECT 1, N'前田', 70 UNION ALL
SELECT 1, N'竹村', 90 UNION ALL
SELECT 2, N'林', 60 UNION ALL
SELECT 2, N'伊藤', 80 UNION ALL
SELECT 2, N'尾山', 75 UNION ALL
SELECT 3, N'樋口', 80 UNION ALL
SELECT 3, N'落合', 15 UNION ALL
SELECT 3, N'黒木', 99

では、「Score」列のデータを元に高い順で順位付けをつけてみましょう。

SELECT ROW_NUMBER() OVER (ORDER BY Score DESC) AS No
, Company, UserName, Score 
FROM dbo.TempData

上記のように「ROW_NUMBER() OVER (ORDER BY Score DESC)」を記述します。

実行結果




では、Company別グループ化してScoreが高い順で順位をつけたい時は下記のように記述します。

SELECT ROW_NUMBER() OVER (PARTITION BY Company ORDER BY Score DESC) AS No
, Company, UserName, Score 
FROM dbo.TempData

PARTITION BY Companyを追記するのです。
PARTITION BY」句を利用すると、グループ化して順位を取得することができます。

実行結果



このようにすごく便利な関数ですが、多いデータを順位をつけるとサーバーに負荷がかかりますので、注意が必要です。

このエントリーをはてなブックマークに追加
2014-09-17 16:57:18   2564

コメント

[SQL Server] 順位付け関数「RANK」、「DENSE_RANK」について

-.日付:2014-10-15   カテゴリ : -   閲覧数:2191

[SQL Server] DISTINCT - 重複行を除外してデータの取得方法

-.日付:2014-10-03   カテゴリ : -   閲覧数:2887

[SQL Server] DATETIME データ型のミリ秒に関する注意事項

-.日付:2014-10-01   カテゴリ : -   閲覧数:3110

[SQL Server] RAND(ランダム)関数で乱数を取得する方法

-.日付:2014-09-24   カテゴリ : -   閲覧数:11893

[SQL Server] 順位付け関数「ROW_NUMBER」について

-.日付:2014-09-17   カテゴリ : -   閲覧数:2564

[SQL Server] LIKEで「_」、「%」が入った文字を検索する方法

-.日付:2014-09-17   カテゴリ : -   閲覧数:3970

[SQL Server] SQL Server CPU 使用率が高いクエリを検索する方法

-.日付:2014-09-12   カテゴリ : -   閲覧数:7045

[SQL Server] 既存のテーブルにPrimary Key(PK)を設定する方法

-.日付:2014-08-20   カテゴリ : -   閲覧数:2030

[SQL Server] テーブルの一覧を取得する方法 - Table List

-.日付:2014-08-14   カテゴリ : -   閲覧数:2255

Copyright © 2015 INNOYA.COM All rights reserved. RSS