oracle sql last_value,SQL Server Last_value()函数

在本教程中,将学习如何使用SQL Server LAST_VALUE()函数获取结果集的有序分区中的最后一个值。

SQL Server LAST_VALUE()函数简介

LAST_VALUE()函数是一个Window函数,它返回结果集的有序分区中的最后一个值。

以下是LAST_VALUE()函数的语法:

LAST_VALUE ( scalar_expression )

OVER (

[PARTITION BY partition_expression, ... ]

ORDER BY sort_expression [ASC | DESC], ...

[rows_range_clause]

)

在上面语法中,

scalar_expression是针对结果集的有序分区中最后一行的值计算的表达式。 scalar_expression可以是列,子查询或表达式,其求值为单个值。它不能是一个Window函数。

PARTITION BY子句将结果集的行分发到应用了LAST_VALUE()函数的分区。 如果未指定PARTITION BY子句,则LAST_VALUE()函数会将整个结果集视为单个分区。

ORDER BY子句指定应用LAST_VALUE()函数的每个分区中行的逻辑顺序。

rows_range_clause通过定义起点和终点进一步限制分区内的行。

SQL Server LAST_VALUE()函数示例

下面将使用在FIRST_VALUE()函数教程中创建的sales.vw_category_sales_volume视图来演示LAST_VALUE()函数的工作原理。

以下查询从视图返回数据:

SELECT

category_name,

year,

qty

FROM

sales.vw_category_sales_volume

ORDER BY

year,

category_name,

qty;

执行上面查询语句,得到以下结果:

e25d718167b70a0a0ef2567c891d1028.png

1. 使用LAST_VALUE()在结果集示例

此示例使用LAST_VALUE()函数返回2016年销售量最高的类别名称:

SELECT

category_name,

year,

qty,

LAST_VALUE(category_name) OVER(

ORDER BY qty

RANGE BETWEEN

UNBOUNDED PRECEDING AND

UNBOUNDED FOLLOWING

) highest_sales_volume

FROM

sales.vw_category_sales_volume

WHERE

year = 2016;

执行上面查询语句,得到以下结果:

fdff21feed68b231664b5fa8f8e194ce.png

在这个例子中:

如果未指定PARTITION BY子句,因此整个结果集被视为单个分区。

ORDER BY子句按数量(qty)从低到高对每个分区中的行进行排序。

UNBOUNDED PRECEDING和UNBOUNDED FOLLOWING子句之间的范围定义了从第一行开始到最后一行结束的分区中的帧。

2. 在分区上使用LAST_VALUE()函数示例

以下示例使用LAST_VALUE()函数返回2016年和2017年销售量最高的产品类别。

SELECT

category_name,

year,

qty,

LAST_VALUE(category_name) OVER(

PARTITION BY year

ORDER BY qty

RANGE BETWEEN

UNBOUNDED PRECEDING AND

UNBOUNDED FOLLOWING

) highest_sales_volume

FROM

sales.vw_category_sales_volume

WHERE

year IN (2016,2017);

执行上面查询语句,得到以下结果:

1b2039bbb37277d38e86b3f6aa85b80b.png

在这个例子中:

PARTITION BY子句按年分配行分为两个分区,一个用于2016,另一个用于2017。

ORDER BY子句按数量(qty)从低到高对每个分区中的行进行排序。

UNBOUNDED PRECEDING和UNBOUNDED FOLLOWING子句之间的范围定义从第一行开始到结束于分区的最后一行的帧。

LAST_VALUE()函数分别应用于每个分区。 对于第一个分区,它返回Electric Bikes;对于第二个分区,它返回了Comfort Bicycles,因为这些类别是每个分区中的最后一行。

在本教程中,学习了如何使用SQL Server LAST_VALUE()函数返回结果集的有序分区中的最后一个值。

¥ 我要打赏

纠错/补充

收藏

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值