Skip to main content

SQLite稠密_秩窗口函数的实例分析

SQLite稠密_RANK()函数简介

DENSE_RANK()是一个窗口函数,它计算一行在有序行集中的排名,并以整数形式返回排名。秩是从1开始的连续整数。具有相同值的行接收相同的排名。如果是平局,则不会跳过排名值。

下面是稠密_RANK()函数的语法:

DENSE_RANK() OVER (
PARTITION BY expression1, expression2,...
ORDER BY expression1 [ASC | DESC], expression2,..
)

在这种语法中:

如果要创建top-N和bottom-N报告,则densite_RANK()函数非常有用。

SQLite稠密_RANK()函数示例

让我们以使用dense_RANK()函数更好地理解它为例。

在结果集示例上使用SQLite DENSE_RANK()

首先,创建一个名为DensrankDemo的新表进行演示:

CREATE TABLE DenseRankDemo (
Val TEXT
);

其次,将数据插入DensrankDemo表:

INSERT INTO DenseRankDemo(Val)
VALUES('A'),('B'),('C'),('C'),('D'),('D'),('E');

第三,使用DENSE_RANK()函数计算每行的秩:

SELECT
Val,
DENSE_RANK () OVER (
ORDER BY Val )
ValRank
FROM
DenseRankDemo;

以下是输出:

SQLite DENSE_RANK Function example

从输出中可以清楚地看到:

在分区示例上使用SQLite DENSE_RANK()

下面的语句使用DENSE_RANK()函数根据曲目的长度计算每个专辑中每个曲目的排名:

SELECT
AlbumId,
Name,
Milliseconds,
DENSE_RANK () OVER (
PARTITION BY AlbumId
ORDER BY Milliseconds
) LengthRank
FROM
tracks;

下图显示了部分输出:

SQLite DENSE_RANK Function with PARTITION BY clause example

在本例中:

在本教程中,您学习了如何使用SQLite densite_RANK()函数来计算有序行集中的行的秩。