次の行の値にアクセスする
LEAD() 関数を使うと、同じクエリ内で GROUP BY を使わずに、後続の行のデータにアクセスできます。これにより、並べ替えられたリスト内で値を簡単に比較できます。
構文は次のとおりです:
LEAD(numeric_expression) OVER ([PARTITION BY column] ORDER BY column)
この演習では、現在の行の値を次の行の値と比較する方法に慣れていきます。
フランスの投票者に関する情報を選択し、結果を合計投票数の昇順で並べ替えます。 目的は、各投票者の投票数が、リスト内で次の人に記録された投票数とどのように比較できるかを分析することです。
この演習はコースの一部です
SQL Serverでのデータ操作のための関数
演習の手順
- リスト内で次の人に記録された投票数を表示する新しい列を作成します。
- 現在の投票者の
total_votesと次の人の投票数の差を示す新しい列を作成します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
SELECT
first_name,
last_name,
total_votes AS votes,
-- Select the number of votes of the next voter
___(___) OVER (___ total_votes) AS votes_next_voter,
-- Calculate the difference between the number of votes
LEAD(___) ___ (ORDER BY ___) - total_votes AS votes_diff
FROM voters
WHERE country = 'France'
ORDER BY total_votes;