首页 > 解决方案 > Row_Number 函数不由自主地对值进行排序(Postgresql)

问题描述

您好,我有以下数据:

存储数据

我应用以下查询:

select row_number() over (partition by "Country", "Product Type") as RN,
"Country", "Product Type", "Process Step", "Volume"
from storage_data;

出于某种奇怪的原因,它给了我以下输出,看起来它按正确的变量分区,但它也在 Process Step 中排序。有人可以向我解释一下吗?

存储数据修改

标签: postgresqlfunctionsortingwindowrow

解决方案


如果您查看EXPLAIN查询的输出,您会看到 PostgreSQL 必须排序以计算row_number(),这不足为奇。

由于查询不包含ORDER BY子句,PostgreSQL 按照计算顺序返回行。


推荐阅读