Ответ
Уверенно владею SQL на уровне, необходимом для сложного анализа данных, валидации и подготовки тестовых сценариев.
Ключевые навыки:
- Сложные выборки: Многотабличные
JOIN(INNER, LEFT, RIGHT, FULL), коррелированные и некоррелированные подзапросы. - Агрегация и группировка:
GROUP BY, агрегатные функции (COUNT,SUM,AVG,MIN/MAX), фильтрация групп черезHAVING. - Оконные функции:
ROW_NUMBER(),RANK(),DENSE_RANK(),LAG()/LEAD()для аналитических запросов. - Модификация данных:
INSERT,UPDATE,DELETE,MERGE(UPSERT). - Оптимизация: Понимание планов выполнения (
EXPLAIN), использование индексов.
Пример аналитического запроса для тестирования бизнес-логики:
-- Найти пользователей, сделавших более 5 заказов за последний месяц,
-- с общей суммой заказов > 1000 и их средним чеком.
SELECT
u.id AS user_id,
u.email,
COUNT(o.id) AS total_orders,
SUM(o.total_amount) AS total_spent,
AVG(o.total_amount) AS avg_order_value,
-- Оконная функция для ранжирования по сумме трат среди таких пользователей
RANK() OVER (ORDER BY SUM(o.total_amount) DESC) AS spending_rank
FROM users u
INNER JOIN orders o ON u.id = o.user_id
WHERE o.status = 'completed'
AND o.created_at >= DATEADD(month, -1, GETDATE())
GROUP BY u.id, u.email
HAVING COUNT(o.id) > 5
AND SUM(o.total_amount) > 1000
ORDER BY total_spent DESC;
Также имею опыт работы с NoSQL (MongoDB агрегации) и написания запросов для API-тестирования (GraphQL, REST).