Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Postgres: window, function

Как выбрать только одну запись из группы (например, первую регистрацию пользователя)?

Вопрос проверяет понимание оконных функций и способов выбора одной записи из группы.

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

Для выбора одной записи из группы используют оконные функции, например ROW_NUMBER(). Данные разбиваются на группы с помощью PARTITION BY, затем выбирается первая строка. Это гибкий способ управлять порядком выбора. Такой подход применяется при дедупликации и аналитике.

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

Выбор одной записи из группы

Когда в таблице есть несколько записей для одного ключа, нужно выбрать одну — например, самую раннюю.

Использование ROW_NUMBER

Пример:

SELECT *
FROM (
    SELECT *,
           ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY created_at) AS rn
    FROM registrations
) t
WHERE rn = 1;

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

  1. Таблица делится на группы по user_id

  2. В каждой группе строки нумеруются

  3. Выбирается первая строка

Почему не GROUP BY

GROUP BY возвращает агрегированные значения, но не позволяет получить всю строку без дополнительных приемов.

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

В PostgreSQL:

SELECT DISTINCT ON (user_id) *
FROM registrations
ORDER BY user_id, created_at;

Этот способ часто проще и быстрее.

Где применяется

  1. Первая регистрация пользователя

  2. Последний статус заказа

  3. Дедупликация событий

Вывод

Оконные функции и DISTINCT ON — стандартные способы выбора одной записи из группы.

  • Аватар

    Python Guru

    Sergey Filichkin

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

Уровень

  • Рейтинг:

    5

  • Сложность:

    6

Навыки

  • Postgres

    Postgres

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

#window

#function

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

  • Аватар

    Python Guru

    Sergey Filichkin

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