这个 sql 算法的性能更好?

better performance for this sql algorithm?

我正在寻找替代 SQL 代码

我的 table 有 4 列:Id, Zip code, timestamp and user value.

行示例:2299898;"40";"2011-03-28 00:45:00+02";1.9

我想为时间等于或早于时间戳的每个邮政编码获取一天的结果集。显然每行的用户数据。

我目前的查询:

SELECT DISTINCT
    FIRST_VALUE(timestamp) OVER (
        PARTITION BY zipcode, DATE(timestamp)
        ORDER BY timestamp DESC
    ) AS timestamp,
    zipcode,
    FIRST_VALUE(userdata) OVER (
        PARTITION BY zipcode, DATE(timestamp)
        ORDER BY timestamp DESC
    ) AS userdata

您不需要 window 功能:

select distinct on (zipcode, timestamp::date)
    timestamp,
    zipcode,
    userdata
from t
order by zipcode, timestamp::date desc, timestamp desc

勾选distinct on