Ответ
Уверенный продвинутый уровень (Advanced). Я могу эффективно работать с данными, оптимизировать запросы и проектировать схемы.
Ключевые навыки:
- Сложные запросы: Многотабличные JOIN (INNER, LEFT, RIGHT, FULL), коррелированные и некоррелированные подзапросы, рекурсивные CTE (Common Table Expressions).
- Аналитические функции: Оконные функции (
ROW_NUMBER(),RANK(),LAG()/LEAD()) сPARTITION BYиORDER BY. - Оптимизация: Понимание и использование индексов (B-tree, составные, покрывающие), анализ планов выполнения (
EXPLAIN ANALYZE), избегание N+1 проблемы. - Целостность данных: Транзакции, уровни изоляции (ACID), ограничения (CONSTRAINTS).
Пример сложного аналитического запроса:
-- Найти сотрудников, чья зарплата выше средней по их отделу за последний год
WITH DeptAvg AS (
SELECT
department_id,
AVG(salary) AS avg_salary
FROM employees
WHERE hire_date >= DATE_SUB(NOW(), INTERVAL 1 YEAR)
GROUP BY department_id
)
SELECT
e.id,
e.name,
e.salary,
d.name AS department,
da.avg_salary AS department_avg,
e.salary - da.avg_salary AS diff_from_avg
FROM employees e
JOIN departments d ON e.department_id = d.id
JOIN DeptAvg da ON e.department_id = da.department_id
WHERE e.salary > da.avg_salary
ORDER BY diff_from_avg DESC;
Опыт с СУБД: PostgreSQL, MySQL, Oracle.