Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Postgres: duplicate, delete, row

Как удалить дубликаты записей, оставив только одну строку в группе?

Вопрос проверяет понимание работы с дубликатами и оконными функциями в SQL.

Короткий ответ

Короткий ответ:
Дубликаты можно удалить, используя ROW_NUMBER() и удаляя строки с номером больше 1. Сначала определяется, какие строки считаются дубликатами, затем выполняется DELETE. Это безопасный и распространенный подход. Он позволяет точно контролировать, какая строка остается.

Длинный ответ

Удаление дубликатов

Часто дубликаты определяются по одному или нескольким полям.

Подход через ROW_NUMBER

Пример:

DELETE FROM orders
WHERE id IN (
    SELECT id FROM (
        SELECT id,
               ROW_NUMBER() OVER (
                   PARTITION BY user_id, created_at
                   ORDER BY id
               ) AS rn
        FROM orders
    ) t
    WHERE rn > 1
);

Что происходит:

  1. Данные группируются по ключам дубликатов

  2. Каждой строке присваивается номер

  3. Все строки, кроме первой, удаляются

Как выбрать правильную строку

Можно управлять порядком:

  • оставить самую раннюю

  • оставить самую новую

  • оставить запись с максимальным приоритетом

Это задается через ORDER BY.

Когда это применяется

  1. Очистка логов

  2. Импорт данных

  3. Синхронизация систем

Вывод

Оконные функции позволяют безопасно определить дубликаты и удалить лишние строки, контролируя правило выбора.

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    5

  • Сложность:

    6

Навыки

  • Postgres

    Postgres

Ключевые слова

#duplicate

#delete

#row

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.