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]
);
以下是支持的参数:
- value_expression—指定前一行的返回值。表达式必须求值为单个值。
- offset -指定从当前行向前访问的行数。
- default -如果偏移量在分区范围之外,则设置默认值。缺省情况下,该值为NULL。
- 分区方式-指定如何对数据进行分区。
- 排序-它为每个分区中的行设置排序格式。
示例数据设置
在深入了解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()函数从当前行获取下一项。