访问上一行的取值
通过在查询中使用 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;