【发布时间】:2018-10-26 13:14:26
【问题描述】:
我正在尝试获取我的 scheduled_jobs 表中每个用户的第一个预定开始时间和最后一个预定结束时间。
我可以让它为一个用户工作,但是当我每天为所有用户尝试时,我可以获得最后一次,但是第一次显示所有 user_id 的第一个 user_id 的时间时无法获得正确的时间。
这是我的代码:
SELECT DISTINCT on (user_id)
user_id, first_value(scheduled_jobs.at) over (order by user_id, scheduled_jobs.at ASC),
last_value(scheduled_jobs.to) over (order by user_id, scheduled_jobs.at DESC)
FROM scheduled_jobs
WHERE scheduled_jobs.at between CURRENT_DATE+INTERVAL'3 day' and CURRENT_DATE +INTERVAL '4 day'
当前结果示例:
user_id | first_value | last_value
19 | 2018-10-29 07:00:00 | 2018-10-29 17:00:00
30 | 2018-10-29 07:00:00 | 2018-10-29 15:00:00
37 | 2018-10-29 07:00:00 | 2018-10-29 16:30:00
每个 user_id 的 Last_value 显示正确,但 first_value 始终显示所有 user_id 的第一个值。
我尝试使用 JOIN 和 USING 查询将它们拆分为不同的 SELECT 查询,但对于 first_value 仍然得到不正确的结果。
【问题讨论】:
标签: sql postgresql window-functions