Skip to main content

SQLite CUME_DIST窗口函数的示例说明

SQLite CUME_DIST()函数简介

CUME_DIST()是一个窗口函数,用于计算窗口或分区内值的累积分布。

下面显示了CUME_DIST()函数的语法:

CUME_DIST() 
OVER (
[PARTITION BY partition_expression]
[ORDER BY order_list]
)

在这种语法中:

假设N是ORDER BY子句中指定的列的当前行的值,且行的顺序从低到高,则使用以下公式计算c的累积分布:

The number of rows with values <= N / The number of rows in the window or partition

CUME_DIST()函数的返回值大于0且小于或等于1:

0 < CUME_DIST() <= 1

具有相同值的行接收相同的结果。

SQLite CUME_DIST()函数示例

首先,为演示创建一个名为CumeDistDemo的新表:

CREATE TABLE CumeDistDemo(
Id INTEGER PRIMARY KEY,
value INT
);

其次,在CumeDistDemo表中插入一些行:

INSERT INTO CumeDistDemo(value)
VALUES(1000),(1200),(1200),(1400),(2000);

第三,从CumeDistDemo表中查询数据:

SELECT 
Id,
Value
FROM
CumeDistDemo;

SQLite CUME_DIST Sample Table

第四,计算CumeDistDemo表中值的累积分布:

SELECT 
Value,
CUME_DIST()
OVER (
ORDER BY value
) CumulativeDistribution
FROM
CumeDistDemo;

以下是输出:

SQLite CUME_DIST Function Example

因为我们跳过了PARTITION BY子句,所以函数将整个结果集视为一个分区。因此,要评估的行数为5。

对于行id 1,值<=1000的行数为1,因此1000的累积分布为1/5=0.2

对于行id 2,值<=1200的行数为3,因此1200的累积分布为3/5=0.6。

同样的逻辑也适用于id为3、4和5的行。

在本教程中,您学习了如何使用SQLite CUME_DIST()函数计算一组值中的值的累积分布。