Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Postgres: where, having, group_by, aggregation, sql_order

Можно ли после GROUP BY применить WHERE‑фильтрацию? Если нет, то как?

Проверяет знание порядка выполнения SQL‑клаузы и использования HAVING.

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

Нельзя — WHERE работает до агрегирования и не видит агрегатные функции. Для фильтрации по результатам GROUP BY используют HAVING, который применяется после группировки и может использовать агрегаты.

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

Порядок выполнения:

  • FROM → 2. WHERE → 3. GROUP BY → 4. HAVING → 5. SELECT → 6. ORDER BY

WHERE:

  • Фильтрует строки до группировки, не поддерживает агрегаты.

HAVING:

  • Фильтрует уже сгруппированные строки, поддерживает агрегаты:

    SELECT user_id, COUNT(*) AS cnt
    FROM orders
    GROUP BY user_id
    HAVING COUNT(*) > 5;

Для пост‑агрегационных условий всегда использовать HAVING.

  • Аватар

    Golang Guru

    Maxim Lukyanov

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

Уровень

  • Рейтинг:

    2

  • Сложность:

    6

Навыки

  • Postgres

    Postgres

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

#where

#having

#group_by

#aggregation

#sql_order

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

  • Аватар

    Golang Guru

    Maxim Lukyanov

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