モジュール 13 · レッスン 3 / 4コース内の 51/57~15 min
モジュールのレッスン (3/4)
ランキング: ROW_NUMBER、RANK、DENSE_RANK
ランキング: ROW_NUMBER、RANK、DENSE_RANK
ウィンドウ関数は、集計だけでなく、順序付けやランキングにも威力を発揮します。連続番号またはランキング位置を割り当てる、ウィンドウ内で動作するように特別に設計された関数があります (OVER() が必須になります)。
これらを基準に対して機能させるには、OVER() 内で ORDER BY 句を使用する必要があります。
ランキングトリオ
ROW_NUMBER(): すべての行に単純な連続番号 (1、2、3...) を割り当て、任意に結合を解除します。RANK(): 「オリンピック」効果を生成します: 1、2、2、4。ギャップを残し (「3」はスキップされます)、同点の場合は同じランクを割り当てます。DENSE_RANK(): ランクを強化します: 1、2、2、3。同点の後にギャップが生じることはありません。
SQL
SELECT
product_name,
price,
RANK() OVER(ORDER BY price DESC) AS price_rank
FROM products;OVER() 内で PARTITION BY と ORDER BY を組み合わせることで、「各カテゴリのトップ 3」を取得できます。
運動#sql.m13.l3.e1
試行回数: 0読み込み中…
顧客テーブル ('customers') から 'first_name'、'last_name'、および 'id' を抽出します ('id' は識別番号であると仮定します)。 DENSE_RANK() を使用して、「id」の降順 (最高から最低へ) に基づいて「ランク」列を追加します。
エディターを読み込み中…
ヒントを表示
DENSE_RANK() OVER(ORDER BY ID DESC)。
3 回の試行後に解決策が利用可能になります
運動#sql.m13.l3.e2
試行回数: 0読み込み中…
製品 (「製品」) の価格に基づいて、「category_id」ごとにランキングを作成します。 「category_id」、「id」、「price」を抽出し、「price」の降順で ROW_NUMBER() を使用して「price_rank」を追加し、「category_id」で分割します。
エディターを読み込み中…
ヒントを表示
PARTITION BY category_id ORDER BY Price DESC を OVER 内で結合します。
3 回の試行後に解決策が利用可能になります