Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Postgres: where, clause, having, aggregation, group by, filter

В чём разница между WHERE и HAVING в SQL-запросах?

Этот вопрос проверяет знание порядка фильтрации строк до и после агрегации.

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

WHERE фильтрует строки до группировки и агрегации, а HAVING — после, уже по результатам агрегатных функций. WHERE не может использовать агрегаты, а HAVING предназначен как раз для условий по COUNT, SUM и т.д.

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

WHERE:

  • Отбирает отдельные строки.

  • Применяется перед GROUP BY.

  • Нельзя писать WHERE COUNT(*) > 1.

HAVING:

  • Фильтрует группы, полученные GROUP BY.

  • Может использовать агрегатные функции:

    SELECT user_id, COUNT(*) AS cnt
    FROM orders
    WHERE status = 'completed'
    GROUP BY user_id
    HAVING COUNT(*) > 5;

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

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

Вывод:

WHERE для фильтрации строк, HAVING — для фильтрации агрегатов.

  • Аватар

    Golang Guru

    Maxim Lukyanov

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

Уровень

  • Рейтинг:

    2

  • Сложность:

    6

Навыки

  • Postgres

    Postgres

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

#where

#clause

#having

#aggregation

#group by

#filter

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

  • Аватар

    Golang Guru

    Maxim Lukyanov

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