Приведи пример использования агрегатной функции
Что проверяют
Умеете ли вы подтверждать данные запросом, а не глазами в интерфейсе. Для тестировщика агрегатные функции это рабочий инструмент сверки: отчёты, витрины, результат миграции, поиск дублей в тестовых данных.
Как отвечать
Агрегатная функция сворачивает набор строк в одно значение: count, sum, avg, min, max. Без group by сворачивается вся выборка, с ним получается по строке на группу.
Лучше сразу показать задачу из своей практики. Сверка отчёта с сырыми данными:
select status, count(*) as cnt, sum(amount) as total
from orders
where created_at >= current_date - interval '30 day'
group by status
order by total desc;Поиск дублей перед проверкой уникальности:
select email, count(*) from users group by email having count(*) > 1;Проговорите два момента, которые интервьюер обычно и проверяет. Первый: where фильтрует строки до группировки, having уже готовые группы, поэтому условие по агрегату в where не работает. Второй: count(*) считает строки, а count(column) пропускает NULL, и avg тоже усредняет только по заполненным значениям.
Сильный ответ добавляет, зачем это тестировщику: подтвердить цифру в отчёте, сверить количество и контрольную сумму до и после миграции, проверить, что фоновая обработка не задвоила записи.
Где спотыкаются
Проверяют отчёт только через интерфейс. Расхождение видно, а доказать нечем, и разработчику уходит задача в духе «сумма неправильная», без запроса, который показывает верное значение.
Забывают про NULL. Среднее посчиталось по заполненным строкам, знаменатель меньше ожидаемого, кандидат заводит дефект, хотя это поведение SQL по стандарту.
Считают агрегат поверх соединения, которое размножило строки. Заказ с тремя позициями после join даёт три строки, и сумма заказа утраивается. Это самый частый ложный баг в сверках, лечится агрегацией до соединения или count(distinct ...).