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

PostgreSQL窗口函数:如何添加用户最后项目日期列?

使用窗口函数查询用户项目及最后项目日期

表结构

User表

idname

Project表

iddate_projectuser_id(FK)

解决方案SQL

用LEFT JOIN关联两表,结合MAX()窗口函数按用户分组提取最新项目日期:

SELECT
    p.id AS project_id,
    p.date_project,
    p.user_id,
    u.name AS user_name,
    MAX(p.date_project) OVER (PARTITION BY u.id) AS last_project
FROM
    User u
LEFT JOIN
    Project p ON u.id = p.user_id
ORDER BY
    u.id, p.date_project DESC;

关键说明

  • LEFT JOIN:保证所有用户都能出现在结果里,哪怕该用户没有任何项目(此时项目相关字段为NULL,last_project也会是NULL)
  • MAX(p.date_project) OVER (PARTITION BY u.id):窗口函数按用户ID分组,计算每个用户的最大项目日期(即最后项目日期),并把这个值附加到该用户的每一条项目记录上
  • 若只需要查询有项目的用户,把LEFT JOIN换成INNER JOIN即可

预期结果

project_iddate_projectuser_iduser_namelast_project

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 09:24:27