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

如何用PostgreSQL窗口函数生成指定年份的最小销售额列?

正确的PostgreSQL查询语句

原始销售数据表:

年份销售额
20211000
20221500
20232000

错误原因分析

你之前的语句 select *,min(sales) over (partition by year=2022) from table 逻辑有误:partition by year=2022 会把数据拆成两个分区——year=2022 的行单独成区,其余行成另一个区,因此min(sales)会分别计算两个分区的最小值,导致非2022年的行显示各自分区的最小值,不符合需求。

正确查询语句(窗口函数实现)

SELECT
    year,
    sales,
    MIN(CASE WHEN year = 2022 THEN sales END) OVER () AS min
FROM your_table;

执行结果

执行后将得到预期的结果:

年份销售额min
202110001500
202215001500
202320001500

逻辑说明

  • CASE WHEN year = 2022 THEN sales END:仅在年份为2022时返回对应销售额,其余行返回NULL
  • MIN(...) OVER ():OVER () 指定窗口覆盖所有行,MIN 函数会忽略NULL值,最终计算出的就是2022年的销售额,且会填充到每一行中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 10:33:13