Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Postgres: sql, aggregate functions, where clause, having clause

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

Вопрос проверяет понимание ограничений использования агрегатных функций в SQL.

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

Нет, агрегатные функции (как SUM, COUNT, AVG) нельзя использовать напрямую в условии WHERE. Вместо этого нужно использовать HAVING для фильтрации результатов агрегации. WHERE фильтрует строки до агрегации, а HAVING — после.

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

В SQL существует важное различие между WHERE и HAVING при работе с агрегатными функциями.

Почему нельзя в WHERE:

  • WHERE выполняется до группировки и агрегации

  • Агрегатные функции работают с группами строк, а не с отдельными строками

Правильный подход:

-- Неправильно (вызовет ошибку):
SELECT department, AVG(salary)
FROM employees
WHERE AVG(salary) > 50000
GROUP BY department;

-- Правильно (используем HAVING):
SELECT department, AVG(salary)
FROM employees
GROUP BY department
HAVING AVG(salary) > 50000;

Разница между WHERE и HAVING:

  • WHERE: фильтрует отдельные строки до группировки

  • HAVING: фильтрует группы строк после группировки

Пример с обоими условиями:

SELECT department, AVG(salary)
FROM employees
WHERE salary > 30000  -- Фильтр отдельных строк
GROUP BY department
HAVING AVG(salary) > 50000;  -- Фильтр групп
  • Аватар

    Golang Guru

    Maxim Lukyanov

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

Уровень

  • Рейтинг:

    2

  • Сложность:

    6

Навыки

  • Postgres

    Postgres

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

#sql

#aggregate functions

#where clause

#having clause

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

  • Аватар

    Golang Guru

    Maxim Lukyanov

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