3 SQL-задачи, которые встречаются на каждом втором собесе
🗂️ 3 SQL-задачи, которые встречаются на каждом втором собеседовании SQL на собесе — это как таблица умножения в школе: вроде просто, но иногда всё равно всё путается 😅
1️⃣ JOIN’ы: сколько строк получится? Есть две таблицы: A = 10 строк, B = 100 строк. Сколько минимум и максимум строк получится при их джоине? Давайте разберем по всем видам джоина: CROSS JOIN → всегда 10 × 100 = 1000 строк. INNER JOIN → от 0 (ничего не сматчилось) до 1000 (многие-ко-многим; каждая строка A стыкуется с 10 строками B). LEFT JOIN (A LEFT B) → от 10 (всё NULL в B) до 1000. RIGHT JOIN (A RIGHT B) → от 100 до 1000. FULL OUTER JOIN → от 100 (всё сматчилось так, что покрыты все строки B) до 1000.
В общем, важно помнить, что максимум ограничен произведением строк, а минимум зависит от типа джоина и совпадений.
2️⃣ Агрегации: «средний чек на пользователя» Частая ловушка: делят сумму всех заказов на количество уникальных пользователей — так никто не считает. Правильно: сначала агрегируем по пользователю, потом берём среднее по пользователям.
3️⃣ Оконки: Классика на практику: для каждого пользователя посчитать дату предыдущего заказа и разницу в днях. В таблице orders есть user_id, order_id, order_date, order_value.
Попробуйте решить сами, а потом уже я оставлю ответ в комментариях 💬👇
Зачем это спрашивают? Потому что это реальный сценарий: когорты, ретеншн, частота покупок, «здоровье» продукта.
Ещё больше таких постов можно найти в моем телеграм канале
Подписывайтесь, чтобы не пропустить новые посты!👩🏻💻