mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-12-16 03:12:43 +00:00
187 lines
4.2 KiB
SQL
187 lines
4.2 KiB
SQL
SET allow_experimental_analyzer=1;
|
|
|
|
SET session_timezone = 'UTC';
|
|
SET joined_subquery_requires_alias = 0;
|
|
SET allow_experimental_analyzer = 1;
|
|
SET join_algorithm = 'full_sorting_merge';
|
|
|
|
-- # 10 dates, 5 keys
|
|
WITH build AS (
|
|
SELECT
|
|
k,
|
|
toDateTime('2001-01-01 00:00:00') + INTERVAL number MINUTE AS t,
|
|
number AS v
|
|
FROM numbers(10), (SELECT number AS k FROM numbers(5))
|
|
SETTINGS join_algorithm = 'default'
|
|
),
|
|
probe AS (
|
|
SELECT
|
|
k * 2 AS k,
|
|
t - INTERVAL 30 SECOND AS t
|
|
FROM build
|
|
)
|
|
SELECT SUM(v)
|
|
FROM probe ASOF JOIN build USING (k, t);
|
|
|
|
-- # Coverage: Missing right side bin
|
|
WITH build AS (
|
|
SELECT
|
|
k * 2 AS k,
|
|
toDateTime('2001-01-01 00:00:00') + INTERVAL number MINUTE AS t,
|
|
number AS v
|
|
FROM numbers(10), (SELECT number AS k FROM numbers(5))
|
|
SETTINGS join_algorithm = 'default'
|
|
),
|
|
probe AS (
|
|
SELECT
|
|
intDiv(k, 2) AS k,
|
|
t - INTERVAL 30 SECOND AS t
|
|
FROM build
|
|
)
|
|
SELECT SUM(v), COUNT(*)
|
|
FROM probe ASOF JOIN build USING (k, t);
|
|
|
|
-- # 20 dates, 5 keys
|
|
WITH build AS (
|
|
SELECT
|
|
k,
|
|
toDateTime('2001-01-01 00:00:00') + INTERVAL number MINUTE AS t,
|
|
number AS v
|
|
FROM numbers(20), (SELECT number AS k FROM numbers(5))
|
|
SETTINGS join_algorithm = 'default'
|
|
),
|
|
probe AS (
|
|
SELECT
|
|
k * 2 AS k,
|
|
t - INTERVAL 30 SECOND AS t
|
|
FROM build
|
|
)
|
|
SELECT SUM(v)
|
|
FROM probe ASOF JOIN build USING (k, t);
|
|
|
|
-- # 30 dates, 5 keys
|
|
WITH build AS (
|
|
SELECT
|
|
k,
|
|
toDateTime('2001-01-01 00:00:00') + INTERVAL number MINUTE AS t,
|
|
number AS v
|
|
FROM numbers(30), (SELECT number AS k FROM numbers(5))
|
|
SETTINGS join_algorithm = 'default'
|
|
),
|
|
probe AS (
|
|
SELECT
|
|
k * 2 AS k,
|
|
t - INTERVAL 30 SECOND AS t
|
|
FROM build
|
|
)
|
|
SELECT SUM(v)
|
|
FROM probe ASOF JOIN build USING (k, t);
|
|
|
|
-- # 50 dates, 5 keys
|
|
WITH build AS (
|
|
SELECT
|
|
k,
|
|
toDateTime('2001-01-01 00:00:00') + INTERVAL number MINUTE AS t,
|
|
number AS v
|
|
FROM numbers(50), (SELECT number AS k FROM numbers(5))
|
|
SETTINGS join_algorithm = 'default'
|
|
),
|
|
probe AS (
|
|
SELECT
|
|
k * 2 AS k,
|
|
t - INTERVAL 30 SECOND AS t
|
|
FROM build
|
|
)
|
|
SELECT SUM(v)
|
|
FROM probe ASOF JOIN build USING (k, t);
|
|
|
|
-- # 100 dates, 5 keys
|
|
WITH build AS (
|
|
SELECT
|
|
k,
|
|
toDateTime('2001-01-01 00:00:00') + INTERVAL number MINUTE AS t,
|
|
number AS v
|
|
FROM numbers(100), (SELECT number AS k FROM numbers(5))
|
|
SETTINGS join_algorithm = 'default'
|
|
),
|
|
probe AS (
|
|
SELECT
|
|
k * 2 AS k,
|
|
t - INTERVAL 30 SECOND AS t
|
|
FROM build
|
|
)
|
|
SELECT SUM(v)
|
|
FROM probe ASOF JOIN build USING (k, t);
|
|
|
|
-- # 100 dates, 50 keys
|
|
WITH build AS (
|
|
SELECT
|
|
k,
|
|
toDateTime('2001-01-01 00:00:00') + INTERVAL number MINUTE AS t,
|
|
number AS v
|
|
FROM numbers(100), (SELECT number AS k FROM numbers(50))
|
|
SETTINGS join_algorithm = 'default'
|
|
),
|
|
probe AS (
|
|
SELECT
|
|
k * 2 AS k,
|
|
t - INTERVAL 30 SECOND AS t
|
|
FROM build
|
|
)
|
|
SELECT SUM(v)
|
|
FROM probe ASOF JOIN build USING (k, t);
|
|
|
|
-- # 1000 dates, 5 keys
|
|
WITH build AS (
|
|
SELECT
|
|
k,
|
|
toDateTime('2001-01-01 00:00:00') + INTERVAL number MINUTE AS t,
|
|
number AS v
|
|
FROM numbers(1000), (SELECT number AS k FROM numbers(5))
|
|
SETTINGS join_algorithm = 'default'
|
|
),
|
|
probe AS (
|
|
SELECT
|
|
k * 2 AS k,
|
|
t - INTERVAL 30 SECOND AS t
|
|
FROM build
|
|
)
|
|
SELECT SUM(v)
|
|
FROM probe ASOF JOIN build USING (k, t);
|
|
|
|
-- # 1000 dates, 50 keys
|
|
WITH build AS (
|
|
SELECT
|
|
k,
|
|
toDateTime('2001-01-01 00:00:00') + INTERVAL number MINUTE AS t,
|
|
number AS v
|
|
FROM numbers(1000), (SELECT number AS k FROM numbers(50))
|
|
SETTINGS join_algorithm = 'default'
|
|
),
|
|
probe AS (
|
|
SELECT
|
|
k * 2 AS k,
|
|
t - INTERVAL 30 SECOND AS t
|
|
FROM build
|
|
)
|
|
SELECT SUM(v)
|
|
FROM probe ASOF JOIN build USING (k, t);
|
|
|
|
-- # 10000 dates, 50 keys
|
|
WITH build AS (
|
|
SELECT
|
|
k,
|
|
toDateTime('2001-01-01 00:00:00') + INTERVAL number MINUTE AS t,
|
|
number AS v
|
|
FROM numbers(10000), (SELECT number AS k FROM numbers(50))
|
|
SETTINGS join_algorithm = 'default'
|
|
),
|
|
probe AS (
|
|
SELECT
|
|
k * 2 AS k,
|
|
t - INTERVAL 30 SECOND AS t
|
|
FROM build
|
|
)
|
|
SELECT SUM(v)
|
|
FROM probe ASOF JOIN build USING (k, t);
|