Безумная SQL-задача для собеседования Senior Data Engineer | Циклические денежные переводы
Ankit Bansal
0:00 / 0:00
Безумная SQL-задача для собеседования Senior Data Engineer | Циклические денежные переводы
4 302 просмотра · 3 месяца назад
Ankit Bansal
187 тыс. подписчиков
4 302 просмотра · 3 месяца назад
В этом видео мы решаем сложную задачу по SQL, часто встречающуюся на собеседованиях на должности старшего инженера данных и инженера-аналитика.
Постановка задачи
Дана таблица транзакций. Необходимо определить все группы пользователей, участвующих в циклическом денежном потоке, где:
✔ Деньги начинаются от пользователя A
✔ Проходят через одного или нескольких промежуточных пользователей
✔ Возвращаются обратно к пользователю A
✔ Все транзакции происходят в течение 1 часа
✔ Сумма остается постоянной на протяжении всего цикла
✔ Ни один пользователь не повторяется на пути, кроме начального пользователя
Рассматриваемые концепции
• Рекурсивные CTE
• Обход графа с использованием SQL
• Обнаружение циклов
• Построение путей
• Сложные вопросы по SQL на собеседованиях
• Реальные сценарии обнаружения мошенничества
• Решение для SQL Server
Это отличная задача для укрепления ваших навыков работы с рекурсивными CTE и понимания того, как SQL может использоваться для обнаружения подозрительных шаблонов транзакций.
Если вы хотите больше подобных сложных задач по SQL на собеседованиях, подпишитесь на канал и продолжайте практиковаться. 🚀
скрипт:
create table transactions (
transaction_id int primary key,
sender_id varchar(3) not null,
receiver_id varchar(3) not null,
amount int not null,
transaction_time datetime not null
);
вставить в транзакции значения
(1, 101, 102, 500, '2025-01-01 09:00:00'),
(2, 102, 103, 500, '2025-01-01 09:10:00'),
(3, 103, 101, 500, '2025-01-01 09:20:00'),
(4, 201, 202, 1000, '2025-01-01 10:00:00'),
(5, 202, 203, 1000, '2025-01-01 10:05:00'),
(6, 203, 204, 1000, '2025-01-01 10:10:00'),
(7, 301, 302, 1000, '2025-01-01 10:00:00'),
(8, 302, 301, 1000, '2025-01-01 10:05:00'),
(9, 401, 402, 500, '2025-01-01 09:00:00'),
(10, 402, 403, 500, '2025-01-01 09:10:00'),
(11, 403, 404, 500, '2025-01-01 09:20:00'),
(12, 404, 401, 500, '2025-01-01 09:25:00');
От нуля до героя (продвинутый уровень) Агрегация SQL:
• All About SQL Aggregations | SQL Advance |...
Наиболее часто задаваемый вопрос на собеседовании по поводу объединения таблиц:
• Most Asked SQL JOIN based Interview Questi...
Решение 4 сложных задач SQL:
• Solving 4 Tricky SQL Problems
Кейс-стади для аналитика данных в Spotify:
• Data Analyst Spotify Case Study | SQL Inte...
Топ-10 вопросов SQL на собеседовании:
• Top 10 SQL interview Questions and Answers...
Вопрос на собеседовании по поводу полного внешнего объединения таблиц:
• SQL Interview Question Based on Full Outer...
Плейлист для освоения SQL:
• Complex SQL Questions for Interview Prepar...
Rank, Dense_Rank и номер строки:
• RANK, DENSE_RANK, ROW_NUMBER SQL Analytica...
#sql #dataengineer