存取前一列的數值
在查詢中使用 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;