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中进行排序。有人能解释一下吗?

存储数据修改

如果你查看查询的EXPLAIN输出,你会发现PostgreSQL必须排序才能计算row_number(),这并不奇怪。

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

最新更新