Дана таблица cities=(date, city, temperature)
Нужно удалить из таблицы два последних (по дате) измерения температуры для каждого города одним запросом.
Написал подзапрос select, который выводит нужные строки, но не знаю, как его отредактировать так, чтоб он их удалял.
Сам подзапрос:
SELECT date, city, temperature
FROM (SELECT *, row_number() OVER (PARTITION BY city ORDER BY date DESC) as r FROM cities
)
WHERE r = 1 or r = 2
Когда вставляю его в запрос DELETE - вылетает ошибка
SQL Error [42601]: ОШИБКА: в подзапросе слишком много столбцов
".
В итоге рабочий запрос выглядит так:
DELETE FROM cities WHERE ctid in (
SELECT ctid FROM (
SELECT ctid, date, city, temperature, row_number() OVER (PARTITION BY city ORDER BY date DESC) as r
FROM cities) as s
WHERE s.r = 1 or s.r = 2
)