SQL Lead函数

SQL lead()函数允许您访问当前行在特定偏移量处的下一行。简而言之,lead()函数允许您从当前行访问下一行。通过指定偏移量值,您可以访问从当前行开始的下1、2、3等行。

它与允许您访问前一行的lag()函数相反。

SQL Lead()函数

函数语法如下:

LEAD(value_expression, offset [, default])

/ (

[PARTITION BY partition_expression]

ORDER BY sort_expression [ASC | DESC]

);

以下是支持的参数:

  1. value_expression—指定前一行的返回值。表达式必须求值为单个值。
  2. offset -指定从当前行向前访问的行数。
  3. default -如果偏移量在分区范围之外,则设置默认值。缺省情况下,该值为NULL。
  4. 分区方式-指定如何对数据进行分区。
  5. 排序-它为每个分区中的行设置排序格式。

示例数据设置

在深入了解lead()函数的工作原理之前,让我们先设置基本表以进行演示。

创建表

INT主键AUTO_INCREMENT;

product_name VARCHAR (255),

类别VARCHAR (255),

price DECIMAL(10,2),

量INT,

expiration_date日期,

条形码长整型数字

);

插入



产品(product_name,

类别,

价格,

量,

expiration_date,

条形码)

值('厨师帽25cm',

“面包房”,

24.67,

57岁的

“2023-09-09”,

2854509564204);

插入



产品(product_name,

类别,

价格,

量,

expiration_date,

条形码)

价值(“鹌鹑蛋罐头”、

“储藏室”,

17.99,

67年,

“2023-09-29”,

1708039594250);

插入



产品(product_name,

类别,

价格,

量,

expiration_date,

条形码)

价值(“咖啡-蛋诺卡布奇诺”,

“面包房”,

92.53,

10,

“2023-09-22”,

8704051853058);

插入



产品(product_name,

类别,

价格,

量,

expiration_date,

条形码)

价值('梨-多刺',

“面包房”,

65.29,

48,

“2023-08-23”,

5174927442238);

插入



产品(product_name,

类别,

价格,

量,

expiration_date,

条形码)

价值(“意面-天使的头发”,

“储藏室”,

48.38,

59岁的

“2023-08-05”,

8008123704782);

插入



产品(product_name,

类别,

价格,

量,

expiration_date,

条形码)

价值('Wine - Prosecco Valdobiaddene');

“生产”,

44.18,

3,

“2023-03-13”,

6470981735653);

插入



产品(product_name,

类别,

价格,

量,

expiration_date,

条形码)

价值(“糕点-法式迷你什锦”,

“储藏室”,

36.73,

52,

“2023-05-29”,

5963886298051);

插入



产品(product_name,

类别,

价格,

量,

expiration_date,

条形码)

价值('橙子罐头,普通话',

“生产”,

65.0,

1,

“2023-04-20”,

6131761721332);

插入



产品(product_name,

类别,

价格,

量,

expiration_date,

条形码)

价值(“猪肩肉”、

“生产”,

55.55,

73年,

“2023-05-01”,

9343592107125);

插入



产品(product_name,

类别,

价格,

量,

expiration_date,

条形码)

value(“Dc Hikiage Hira Huba”,

“生产”,

56.29,

53岁,

“2023-04-14”,

3354910667072);

示例1:

在本例中,我们可以访问包含产品信息的“products”表。假设我们想从当前行获取下一个条形码。

我们可以这样使用lead()函数:

假设我们有一个包含如下员工信息的表:

选择

product_name,

价格,

将(条形码)置于(按类别划分)之上

命令

price asc) as next item



产品p;

给定的代码根据类别对数据进行分区。然后,它使用lead()函数获取分区中的下一个条形码。

结果输出如下:

示例2:

如果特定列中没有下一行(超出边界),则该函数将值设置为NULL,如前面的示例所示。

要为任何范围外访问设置默认值,可以这样做:

选择

product_name,

价格,

引(条形码,1,'N/A')过(按类别划分)

命令

price asc) as next item



产品p;

我们将默认值设置为“N/A”。这将替换任何超出边界的值,如下所示:

注意:将偏移量设置为1类似于不指定任何值。

示例3:

假设您希望访问当前行的下两行。我们可以通过将偏移值设置为2来做到这一点。

查询示例如下:

选择

product_name,

价格,

将(条形码,2,'N/A')过(按类别划分)

命令

price asc) as next item



产品p;

该查询返回每个分区中接下来的两行,如下所示:

好了!

结论

在本教程中,我们学习了如何使用lead()函数从当前行获取下一项。