Скажем, у меня есть таблица «Заказы», созданные как:группы по вопросу в PostgreSQL
CREATE TABLE orders (id SERIAL,
customerID INTEGER,
timestamp BIGINT,
PRIMARY KEY(id));
Отметка является UNIX метка времени. Теперь я хочу выбрать идентификаторы LATEST заказов для каждого клиента. Как было бы хорошо.
Однако следующее утверждение
CREATE VIEW lastOrders AS SELECT id,
customerID,
MAX(timestamp)
FROM orders
GROUP BY customerID;
Вызывает ошибку Postgre:
ERROR: column "orders.id" must appear in the GROUP BY clause or be used in an aggregate function
Что я делаю неправильно?
посмотрел DISTINCT ON в postgres doc. Только то, что мне было нужно. Очень элегантно. Благодаря! – user54579
Согласен. Это то, что приходит время от времени, и разработчики Postgres нашли хороший способ справиться с этим. Позор, это не часть стандартного SQL. – yukondude