前の行の値にアクセスする
クエリで LAG() 関数を使うと、現在の行より前の行にアクセスできます。
構文は次のとおりです:
LAG(numeric_expression) OVER ([PARTITION BY column] ORDER BY column)
この演習では、クエリ内でこの関数を使います。会社名 "Fruition" のチョコレートバーの評価を分析しましょう。
この会社は、世界各地から調達したカカオでチョコレートを製造しています。
同じ産地のバーについて、カカオ含有率と評価スコアの間に相関があるかを確認したいと考えています。 そのために、各バーのカカオ含有率を、直前に評価されたバーの含有率と比較します。次に、これらの値の差を計算し、その結果を解釈します。
この演習はコースの一部です
SQL Serverでのデータ操作のための関数
演習の手順
- 同じ産地(
broad_bean_originが同じ)の中で、より低いスコアを受けたチョコレートバーのカカオ含有率を示す新しい列を作成します。 - 現在のバーのカカオ含有率と、直前のバーの含有率との差を表す新しい列を作成します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
SELECT
broad_bean_origin AS bean_origin,
rating,
cocoa_percent,
-- Retrieve the cocoa % of the bar with the previous rating
___(___)
OVER(___ broad_bean_origin ORDER BY ___) AS percent_lower_rating
FROM ratings
WHERE company = 'Fruition'
ORDER BY broad_bean_origin, rating ASC;