在 SQL 中,LAG
函数是一种窗口函数,它允许你访问前一行的数据
以下是如何使用 LAG
函数基于列值比较表中的行的示例:
假设你有一个名为 sales
的表,它包含以下列:id
(销售ID)、product
(产品名称)、quantity
(销售数量)和 sale_date
(销售日期)。你想要比较今天和昨天同一个产品的销售数量。
你可以使用以下查询:
SELECT
id,
product,
quantity,
sale_date,
LAG(quantity, 1) OVER (PARTITION BY product ORDER BY sale_date) AS previous_day_quantity
FROM
sales
ORDER BY
product,
sale_date;
这个查询的解释如下:
LAG(quantity, 1)
函数,通过指定滞后值 1
表示我们想要访问前一行的 quantity
数据。OVER()
子句,我们可以在 PARTITION BY product
中按照产品名称进行分区,在每个分区内分别计算滞后值。这使我们能够为每个产品分别比较今天和昨天的销售数量。ORDER BY sale_date
对每个分区内的行按照销售日期进行排序。上述查询将返回一个结果集,其中包括 id
、product
、quantity
(今天的销售数量)、sale_date
和 previous_day_quantity
(昨天的销售数量)。通过比较 quantity
和 previous_day_quantity
,你可以分析每天同一种产品销售数量的变化。
领取专属 10元无门槛券
手把手带您无忧上云