Есть таблица с полями url и created_at.
В таблице есть множество записей с одинаковым url. Мне нужно получить записи со самым старшим created_at, для каждой группы с одинаковым url. Т.е., имея:
url | created_at
------------------------
abc | 1
abc | 2
abc | 2
def | 3
def | 0
Получить:
url | created_at
------------------------
abc | 2
def | 3
Пробовал сделать это так:
SELECT *
FROM items
GROUP BY url
HAVING created_at = MAX(created_at)
Получаю:
ERROR: column "items.id" must appear in the GROUP BY clause or be used in an aggregate function
Попробовал то же самое немного иначе:
SELECT MAX(created_at) AS last_created_At, *
FROM items
GROUP BY url
HAVING created_at = last_created_at
Получил:
ERROR: column "last_created_at" does not exist
LINE 4: HAVING created_at = last_created_at`
Похоже я неправильно понимаю как работает GROUP BY HAVING. Как мне достичь желаемого без вложенного запроса?