У меня есть база данных PostgreSQL 11. Снимок таблицы «книга» ниже. Моя настоящая база данных состоит из 200 строк в метку времени вместо четырех в этом примере.
timestamp ask_price bid_price
18:00 5 4
18:00 6 3
18:00 7 2
18:00 8 1
19:00 6 5
19:00 7 4
19:00 8 3
19:00 9 2
Я хочу удалить все, кроме первых двух строк на временной отметке, чтобы уменьшить размер моей базы данных. Результаты должны выглядеть следующим образом:
timestamp ask_price bid_price
18:00 5 4
18:00 6 3
19:00 6 5
19:00 7 4
Я попробовал следующий запрос:
DELETE FROM book
WHERE ctid IN (
SELECT ctid FROM book
GROUP BY timestamp
ORDER BY ask_price DESC LIMIT 2)
Однако возвращается следующая ошибка:
ctid must appear in the GROUP BY clause or be used in an aggregate function
Как я могу удалить строки?