【发布时间】:2019-02-25 21:18:22
【问题描述】:
我使用的表格如下所示:
userID, eventDate, eventName
1 2019-01-01 buySoup
2 2019-01-01 buyEggs
2 2019-01-03 buyMilk
2 2019-01-04 buyMilk
3 2019-01-02 buyBread
3 2019-01-03 buyBread
我目前的查询是:
SELECT
userID,
FIRST_VALUE(eventName) OVER (
PARTITION BY userID ORDER BY eventDate ASC
) AS firstBought
FROM table
GROUP BY userID
我觉得这应该返回:
userID, firstBought
1 buySoup
2 buyEggs
3 buyBread
相反,它给出了错误:
'错误:列“table.eventName”必须出现在 GROUP BY 子句中或用于聚合函数中'
有没有办法在不将其包含在按函数分组或创建子查询的情况下获取此值?我正在使用 PostgreSQL。
如果我确实将它包含在 group by 子句中,它会返回
userID, firstBought
1 buySoup
2 buyEggs
2 buyEggs
2 buyEggs
3 buyBread
3 buyBread
我知道我可以将其设为子查询,然后按用户 ID、firstBought 分组,但我不想创建另一个子查询。
【问题讨论】:
标签: sql postgresql vertica