Skip to main content

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;

下图显示了输出:

SQLite FIRST_VALUE with ORDER BY example

在本例中,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 with PARTITION BY example

在本例中:

在本教程中,您学习了如何使用SQLite FIRST_VALUE()函数获取指定窗口框架中第一行的值。