Для каждой строки в таблице salaries вывести имя сотрудника, дату, зарплату и, используя оконную функцию, добавить столбец "средняя зарплата по отделу на эту дату".

Для дневных снимков зарплат используйте AVG(salary) OVER (PARTITION BY department_id, salary_date). Окно добавит среднее, не сворачивая исходные строки.

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

Что ответить на собеседовании

Для дневных снимков зарплат используйте AVG(salary) OVER (PARTITION BY department_id, salary_date). Окно добавит среднее, не сворачивая исходные строки.

Подробный разбор

Ответ с пояснениями

Для дневных снимков зарплат используйте AVG(salary) OVER (PARTITION BY department_id, salary_date). Окно добавит среднее, не сворачивая исходные строки.

Предположим, каждая строка salaries описывает сотрудника на указанную дату:

SELECT employee_name, salary_date, salary,
       AVG(salary) OVER (
           PARTITION BY department_id, salary_date
       ) AS department_average
FROM salaries;

В отличие от GROUP BY, оконная функция сохраняет детализацию. AVG игнорирует NULL. Если таблица хранит только события изменения зарплаты, сначала нужно восстановить действующие значения всех сотрудников на дату: простое окно по дате изменения не даст среднее по отделу.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее