【发布时间】:2016-07-26 22:59:11
【问题描述】:
我有一张桌子,上面有 person_id、timestamp 和 name。我正在尝试编写一个查询来获取一个人在给定日期(在给定时区)的第一个时间戳。当然,我尝试使用 FIRST_VALUE 并在一天中进行分区,但不确定为什么它不起作用。
SELECT first_value("timestamp") OVER w,
date_trunc('day', "timestamp" AT TIME ZONE 'US/Central')
FROM analytics_analyticsevent as ae
WHERE person_id=3
GROUP BY date_trunc('day', "timestamp" AT TIME ZONE 'US/Central')
WINDOW w as (PARTITION BY date_trunc('day', "timestamp" AT TIME ZONE 'US/Central'))
这给了我错误:
ERROR: column "ae.timestamp" must appear in the GROUP BY clause or be used in an aggregate function
LINE 2: SELECT first_value("timestamp") OVER w,
^
有什么想法吗?
【问题讨论】:
-
必须在group by中添加first_value("timestamp")
标签: sql postgresql window-functions