首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >YashanDB LEAD函数

YashanDB LEAD函数

原创
作者头像
用户10349277
发布2025-06-11 11:44:59
发布2025-06-11 11:44:59
2490
举报
文章被收录于专栏:YashanDB知识库YashanDB知识库
代码语言:javascript
复制
lead::= LEAD "(" expr [(RESPECT|IGNORE) NULLS] "," offset "," default ")" OVER "(" [query_partition_clause] order_by_clause ")"

LEAD为窗口函数。本函数根据窗口查询返回的一系列行和游标的位置,提供对超出该位置的给定物理偏移量的行的访问,并返回该行记录对应expr的值。

窗口函数不可嵌套,因此expr为除窗口函数之外的其他通用表达式,其数据类型可以是除大对象型、JSON、XMLTYPE及UDT以外的数据类型。

(RESPECT|IGNORE) NULLS

指定expr的空值是否被包括在函数的计算中,缺省为RESPECT NULLS。

offset

指定物理偏移量的表达式,须为除大对象型、JSON以外可转换为NUMBER的其他类型数据。

offset为与expr相同的通用表达式,但不能为NULL。

offset可省略,则其默认值为1。

如果偏移量超出表的范围,则返回default定义的默认值。

default

指定按给定偏移量无法获取到行记录时,函数返回的默认值。default为与expr相同的通用表达式,其数据类型可以是除大对象型、JSON、XMLTYPE及UDT以外的数据类型,可省略,则默认值为NULL。

当default与expr的类型不一致时,则将default向expr类型进行转换,长度取default与expr中最大长度,如果转换失败则报错。

示例

代码语言:javascript
复制
-- area1表中包含如下字段和数据
SELECT area_no,area_name,DHQ,employee_count FROM area1;
AREA_NO AREA_NAME            DHQ             EMPLOYEE_COUNT
------- -------------------- --------------- --------------
01      华东               Shanghai                      
02      华西               Chengdu                    300
03      华南               Guangzhou                  400
04      华北               Beijing                    300
05      华中               Wuhan                           

-- 返回AREA_NO排序下一行的EMPLOYEE_COUNT
SELECT LEAD(employee_count) OVER(ORDER BY AREA_NO) res FROM area1;
         RES 
------------ 
         300
         400
         300
               


-- 返回AREA_NO排序下一个非空的EMPLOYEE_COUNT
SELECT LEAD(employee_count IGNORE NULLS) OVER(ORDER BY AREA_NO) res FROM area1;
         RES 
------------ 
         300
         400
         300
 


-- 返回AREA_NO排序下一个非空的EMPLOYEE_COUNT,若为空则返回0
SELECT LEAD(employee_count IGNORE NULLS,1,0) OVER(ORDER BY AREA_NO) res FROM area1;
         RES 
------------ 
         300
         400
         300
           0
           0

Copied!

query_partition_clause|order_by_clause

窗口函数通用语法。

示例

代码语言:javascript
复制
-- finance_info表记录了分年、月、机构的收入情况
SELECT year,month,branch,revenue_total FROM finance_info;
YEAR  MONTH BRANCH REVENUE_TOTAL 
----- ----- ------ ------------- 
2001  01    0201            2888
2021  01    0201           28888
2021  01    0101           38888
2021  02    0101           37778

-- 分年统计每一个机构每月和下月的收入对比情况
SELECT year,month,revenue_total curr_month,
LEAD(revenue_total,1,0) OVER (PARTITION BY year ORDER BY year,month,branch) next_month
FROM finance_info;
YEAR  MONTH  CURR_MONTH  NEXT_MONTH 
----- ----- ----------- ----------- 
2001  01           2888           0
2021  01          38888       28888
2021  01          28888       37778
2021  02          37778           0

Copied!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档