我使用了一个长相如下的表格:
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 子句中或在聚合函数中使用'
是否有一种方法可以在不将其包含在 group by 函数中或创建子查询的情况下获取该值? 我正在使用 PostgreSQL。
如果在 group by 子句中包含它,则会返回
userID, firstBought
1 buySoup
2 buyEggs
2 buyEggs
2 buyEggs
3 buyBread
3 buyBread
我知道可以将其作为子查询,然后按userID、firstBought进行分组,但我不想再创建另一个子查询。
group by
。 - Gordon Linoff