**Данные:** логи API requests:
[см. код в задании]
Таблица содержит ~100M запросов/день.
**Задание:**
1. Рассчитать **p50, p95, p99** response time **по endpoint** за последний час
2. Использовать ClickHouse `quantileTDigest` (memory-efficient)
3. Сравнить точность с `quantileExact` (1 endpoint, обоснуй выбор)
4. Найти endpoint-ы где p99 > 5000ms — это SLA violations
Структура для ориентира — реальные значения из эталонного решения.
CREATE TABLE api_quantiles_5min
(
ts_5min DateTime,
endpoint String,
p50_state AggregateFunction(quantileTDigest(0.5), UInt32),
p95_state AggregateFunction(quantileTDigest(0.95), UInt32),
p99_state AggregateFunction(quantileTDigest(0.99), UInt32),
request_count_state AggregateFunction(count)
)
ENGINE = AggregatingMergeTree
ORDER BY (ts_5min, endpoint);
CREATE MATERIALIZED VIEW api_quantiles_mv TO api_quantiles_5min AS
SELECT
toStartOfFiveMinute(ts) AS ts_5min,
endpoint,
quantileTDigestState(0.5)(response_time_ms) AS p50_state,
quantileTDigestState(0.95)(response_time_ms) AS p95_state,
quantileTDigestState(0.99)(response_time_ms) AS p99_state,
countState() AS request_count_state
FROM api_logs
GROUP BY ts_5min, endpoint;
ClickHouse quantileTDigest percentile API monitoring
Это задание для уровня Middle. Для middle-аналитиков с опытом 1-3 года, требует уверенного владения темой и понимания edge cases.
Подобные задания в категории «SQL» регулярно дают на собеседованиях аналитика данных в Яндекс, Сбер, Ozon, Авито, Тинькофф, Wildberries, T-Bank, X5, ВТБ и других крупных IT-компаниях. Тематика: ClickHouse, quantileTDigest, percentile, API, monitoring.
На реальном собеседовании на подобную задачу отводится 15-30 минут — оцениваются подход, корректность, обработка edge cases. Для тренировки рекомендуем сначала решить самостоятельно, потом сверить с эталонным решением и подсказками.
На zasqlpython.ru есть 520+ SQL задач в песочнице с автопроверкой кода, конспекты SQL для аналитика, AI мок-собеседование с разбором ваших ответов.
← Все задания