GLOBAL IN: подзапрос по шардированному кластеру без перекоса

Senior SQL Общие

Условие задания

**Контекст:** кластер ClickHouse, таблица `events` шардирована по `user_id` (Distributed-таблица поверх локальных). Нужно: события пользователей, которые на этой неделе совершили покупку.

[см. код в задании]

**Задание:**
1. Запрос `WHERE user_id IN (SELECT user_id FROM purchases_dist WHERE ...)` на кластере даёт неверный/медленный результат. Объясни почему и почини через `GLOBAL IN`.
2. В чём разница `IN` и `GLOBAL IN` на распределённой таблице.

Темы

ClickHouse distributed GLOBAL IN sharding кластер

Подсказки

Все тестовые задания →

Частые вопросы

Какой уровень знаний нужен для задачи "GLOBAL IN: подзапрос по шардированному кластеру без перекоса"?

Это задание для уровня Senior. Senior-уровень — глубокое понимание темы, опыт решения нестандартных задач, обсуждение trade-off на собеседовании.

На каких собеседованиях встречается такая задача?

Подобные задания в категории «SQL» регулярно дают на собеседованиях аналитика данных в Яндекс, Сбер, Ozon, Авито, Тинькофф, Wildberries, T-Bank, X5, ВТБ и других крупных IT-компаниях. Тематика: ClickHouse, distributed, GLOBAL IN, sharding, кластер.

Сколько времени даётся на решение?

На реальном собеседовании на подобную задачу отводится 30-60 минут с обсуждением подходов, оптимизаций и trade-off. Для тренировки рекомендуем сначала решить самостоятельно, потом сверить с эталонным решением и подсказками.

Где ещё потренироваться по теме «SQL»?

На zasqlpython.ru есть 520+ SQL задач в песочнице с автопроверкой кода, конспекты SQL для аналитика, AI мок-собеседование с разбором ваших ответов.

← Все задания