Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Postgres: distinct, group by

Как еще, кроме DISTINCT, можно добиться уникальности записей в выборке?

Этот вопрос проверяет знание альтернативных способов получения уникальных записей в SQL без использования DISTINCT.

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

Кроме DISTINCT, уникальности записей можно добиться с помощью GROUP BY по всем нужным столбцам, использованием оконных функций (например, ROW_NUMBER()) с фильтрацией, или путем агрегации и последующего разворачивания данных. Каждый метод имеет свои применения в зависимости от контекста.

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

DISTINCT — не единственный способ получить уникальные строки.

Альтернативы:

  1. GROUP BY:

    SELECT col1, col2 FROM table GROUP BY col1, col2;

    Это даст unique combinations of col1 and col2.

  2. Оконные функции:
    Например, использовать ROW_NUMBER() чтобы пронумеровать строки within a partition и выбрать только первые:

    WITH ranked AS (
      SELECT *, ROW_NUMBER() OVER (PARTITION BY col1, col2 ORDER BY some_col) as rn
      FROM table
    )
    SELECT col1, col2 FROM ranked WHERE rn = 1;
  3. Подзапросы с агрегацией:
    Например, выбрать MAX или MIN для каждой группы:

    SELECT col1, col2, MAX(some_col) 
    FROM table 
    GROUP BY col1, col2;

Сравнение:

  • DISTINCT прост и читаем, но may not be flexible.

  • GROUP BY может быть более efficient в некоторых случаях.

  • Оконные функции полезны для complex deduplication logic.

  • Аватар

    Golang Guru

    Maxim Lukyanov

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

Уровень

  • Рейтинг:

    2

  • Сложность:

    7

Навыки

  • Postgres

    Postgres

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

#distinct

#group by

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

  • Аватар

    Golang Guru

    Maxim Lukyanov

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