CREATE TABLE api_responses(
endpoint String,
response_time_ms UInt32,
is_successful UInt8
) ENGINE = Log;
INSERT INTO api_responses VALUES
('orders', 82, 1),
('orders', 94, 1),
('orders', 98, 1),
('orders', 87, 1),
('orders', 103, 1),
('orders', 92, 1),
('orders', 89, 1),
('orders', 105, 1),
('products', 45, 1),
('products', 52, 1),
('products', 48, 1),
('products', 51, 1),
('products', 49, 1),
('products', 53, 1),
('products', 47, 1),
('products', 50, 1),
('users', 120, 0),
('users', 125, 0),
('users', 118, 0),
('users', 122, 0),
('users', 121, 0),
('users', 119, 0),
('users', 123, 0),
('users', 124, 0);
SELECT
endpoint,
quantilesTimingIf(0, 0.25, 0.5, 0.75, 0.95, 0.99, 1.0)(response_time_ms, is_successful = 1) as response_time_quantiles
FROM api_responses
GROUP BY endpoint;