メインコンテンツまでスキップ
翻訳ページ

このページは AI の支援を受けて英語から翻訳されています。内容が異なる場合は英語版が正となります。

DENSE_RANK

現在の行の順位を欠番なしで返します。これは、パーティション内での現在の行のピアグループの番号です。並べ替え列の値が等しい行には同じ順位が割り当てられ、次の順位の値は常に 1 ずつ増加します(欠番なし)。

行には、ウィンドウ定義の ORDER BY 句で定義された順序で 1 から番号が付けられます。ORDER BY 句がない場合、すべての行がピアと見なされ、この関数は常に 1 を返します。

関連項目: [SELECT] [ROW_NUMBER] [RANK]


構文​

SELECT DENSE_RANK() OVER ([PARTITION BY column] ORDER BY column [ASC|DESC])
FROM <multipartIdentifier>;

引数​

PARTITION BY column 省略可能。結果セットをパーティションに分割します。DENSE_RANK 関数は各パーティションに個別に適用されます。

ORDER BY column 順位を割り当てる順序を指定します。ORDER BY 句がない場合、すべての行がピアと見なされ、順位 1 が割り当てられます。

戻り値​

パーティション内での現在の行の密な順位を表す整数を返します。同値の行があっても欠番は生じません。


例​

コントリビューション数でコントリビューターを順位付けする(欠番なし)​

-- Rank contributors without gaps for ties
SELECT
DENSE_RANK() OVER (ORDER BY contributions DESC) as rank,
login,
contributions,
html_url
FROM github.repos.contributors
WHERE owner = 'stackql'
AND repo IN ('stackql', 'stackql-deploy', 'stackql-provider-registry')
ORDER BY contributions DESC;

DENSE_RANK を RANK および ROW_NUMBER と比較する​

-- Compare RANK vs DENSE_RANK vs ROW_NUMBER for contributors
SELECT
login,
contributions,
RANK() OVER (ORDER BY contributions DESC) as rank,
DENSE_RANK() OVER (ORDER BY contributions DESC) as dense_rank,
ROW_NUMBER() OVER (ORDER BY contributions DESC) as row_num
FROM github.repos.contributors
WHERE owner = 'stackql'
AND repo = 'stackql';

複数のリポジトリにわたって合算したコントリビューション数を順位付けする​

-- Rank total contributions across multiple repos
WITH all_contributors AS (
SELECT login, contributions, html_url
FROM github.repos.contributors
WHERE owner = 'stackql' AND repo = 'stackql'
UNION ALL
SELECT login, contributions, html_url
FROM github.repos.contributors
WHERE owner = 'stackql' AND repo = 'stackql-deploy'
UNION ALL
SELECT login, contributions, html_url
FROM github.repos.contributors
WHERE owner = 'stackql' AND repo = 'stackql-provider-registry'
)
SELECT
DENSE_RANK() OVER (ORDER BY SUM(contributions) DESC) as rank,
login,
SUM(contributions) as total_contributions,
MAX(html_url) as html_url
FROM all_contributors
GROUP BY login
ORDER BY total_contributions DESC;

詳細については、https://sqlite.org/windowfunctions.html#built-in_window_functions を参照してください。