Я использую таблицу, которая выглядит следующим образом:
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
Я понимаю, что могу сделать это подзапросом, а затем группировать по userID, firstBought, но я бы не хотел создавать другой подзапрос.