You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL:如何获取以指定日期为终点的单条窗口函数结果

解决方案

针对你的需求,有两种可行方法获取以指定日期为结束的完整窗口计算结果,且仅返回一行数据:

方法一:先计算滚动窗口值再筛选目标行

先对目标商品的所有行计算滚动最小值(窗口包含当前行及前3行),再筛选指定日期的结果。这种方式能让窗口函数访问到完整的前置数据,确保计算准确:

SELECT p_date, previous_low_min
FROM (
    SELECT 
        p_date,
        MIN(low_price) OVER(ORDER BY p_date ROWS BETWEEN 3 PRECEDING AND CURRENT ROW) AS previous_low_min
    FROM your_table -- 替换为你的实际表名
    WHERE item_id = 'A1'
) AS window_calculations
WHERE p_date = '2022-11-09';

方法二:直接筛选窗口范围数据后聚合

直接查询指定日期及之前最多3行的数据,再取最小值,逻辑直观且性能更高效:

SELECT 
    '2022-11-09'::DATE AS p_date,
    MIN(low_price) AS previous_low_min
FROM your_table -- 替换为你的实际表名
WHERE 
    item_id = 'A1'
    AND p_date <= '2022-11-09'
ORDER BY p_date DESC
LIMIT 4; -- 取当前行及前3行,最多4条数据

结果说明

两种方法都会返回如下结果:

p_dateprevious_low_min
2022-11-094.99

这是因为以2022-11-09为结束的窗口包含2022-11-04、2022-11-06、2022-11-08、2022-11-09这四行,其中最低价格为4.99。

内容的提问来源于stack exchange,提问作者SuperDave

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 04:20:55