LowCardinality и выбор типов: ужать таблицу и ускорить GROUP BY

Junior SQL Общие

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

**Задача:** аналитик создал таблицу «по-постгресовому» и она занимает в 3 раза больше места, чем должна, а GROUP BY по `country`/`platform` медленный.

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

**Задание:** перепроектируй типы. Объясни выигрыш по каждому полю.

Пример данных

Структура для ориентира — реальные значения из эталонного решения.

CREATE TABLE events_good (
    user_id UInt64,                       -- было String
    country LowCardinality(String),       -- ~200 уникальных
    platform LowCardinality(String),      -- 3 уникальных
    is_premium UInt8,                     -- ок, bool как UInt8
    ts DateTime
) ENGINE = MergeTree
ORDER BY ts;

Темы

ClickHouse LowCardinality типы данных оптимизация хранения

Подсказки

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

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

Какой уровень знаний нужен для задачи "LowCardinality и выбор типов: ужать таблицу и ускорить GROUP BY"?

Это задание для уровня Junior. Подходит для начинающих аналитиков, проверяет базовые знания SQL/Python/статистики.

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

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

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

На реальном собеседовании на подобную задачу отводится 5-10 минут — проверяется скорость и базовая грамотность. Для тренировки рекомендуем сначала решить самостоятельно, потом сверить с эталонным решением и подсказками.

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

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

← Все задания