SQLite FIRST_VALUE()函数的实例
介绍第一个_VALUE()函数
FIRST_VALUE()是一个窗口函数,允许您获取指定窗口帧中第一行的值。
下面显示了第一个函数的语法:
FIRST_VALUE(expression) OVER (
PARTITION BY expression1, expression2,...
ORDER BY expression1 [ASC | DESC], expression2,..
frame_clause
)
在这种语法中:
表示
是根据窗口框架中的第一行计算的表达式。表达式必须返回单个值。无法在表达式中使用子查询或其他窗口函数。
分割
PARTITION BY子句根据第一个函数应用的一个或多个条件将行分配到分区中。partitionby子句是可选的。如果省略它,第一个_VALUE()函数将把整个结果集视为一个分区。
订购人
ORDER BY子句指定第一个_VALUE()函数应用到的每个分区中的行的顺序。
框架条款
frame_子句定义当前分区的框架。有关frame子句的详细信息,请查看窗口frame子句教程。
SQLite FIRST_VALUE()函数示例
我们将使用示例数据库中的tracks表进行演示:
1) 使用SQLite FIRST_VALUE()函数和ORDER BY子句示例
下面的语句使用FIRST_VALUE()函数返回唱片集id 1的曲目名称、字节大小和最小曲目:
SELECT
Name,
printf('%,d',Bytes) Size,
FIRST_VALUE(Name) OVER (
ORDER BY Bytes
) AS SmallestTrack
FROM
tracks
WHERE
AlbumId = 1;
下图显示了输出:
在本例中,ORDER BY子句根据字节列中的值对轨迹进行排序,FIRST_VALUE()函数从结果集中选择第一个轨迹。
请注意,我们使用printf()函数将字节列中的数值格式化为逗号(,)。
2) 使用SQLite FIRST_VALUE()和PARTITION BY子句示例
下面的示例返回所有专辑中的所有曲目。它还显示了每张专辑的最大曲目:
SELECT
AlbumId,
Name,
printf('%,d',Bytes) Size,
FIRST_VALUE(Name) OVER (
PARTITION BY AlbumId
ORDER BY Bytes DESC
) AS LargestTrack
FROM
tracks;
以下是部分输出:
在本例中:
在本教程中,您学习了如何使用SQLite FIRST_VALUE()函数获取指定窗口框架中第一行的值。