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()函数从当前行获取下一项。