Работа над ошибками: 'Синтаксис'.

Практика: 'JOIN' - 'Массивы, Map и вложенные структуры*' - 'Партиции' - 'Индексы'.
This commit is contained in:
mnoskov
2026-05-18 16:55:22 +03:00
parent 80d333fe52
commit ae208a76fb
8 changed files with 577 additions and 0 deletions
@@ -0,0 +1,120 @@
-- Задание 1
CREATE TABLE mnoskov.page_views
ON CLUSTER clickhouse_cluster
(
user_id UInt64,
url String,
view_time DateTime
)
ENGINE = MergeTree
PARTITION BY toYYYYMM(view_time)
ORDER BY (user_id, view_time);
-- Задание 2
CREATE TABLE mnoskov.users
ON CLUSTER clickhouse_cluster
(
id UInt64,
name String,
update_at DateTime
)
ENGINE = ReplacingMergeTree(update_at)
ORDER BY id;
-- Задание 3
CREATE TABLE mnoskov.region_sales
ON CLUSTER clickhouse_cluster
(
region String,
date Date,
sales UInt64
)
ENGINE = SummingMergeTree
PARTITION BY toYYYYMM(date)
ORDER BY (region, date);
INSERT INTO mnoskov.region_sales (region, date, sales)
VALUES
('Moscow', '2026-05-01', 100),
('Moscow', '2026-05-01', 150),
('Moscow', '2026-05-01', 200),
('Berlin', '2026-05-02', 300),
('Berlin', '2026-05-02', 120),
('Berlin', '2026-05-02', 80),
('Paris', '2026-05-03', 500),
('Paris', '2026-05-03', 250),
('London', '2026-05-04', 400),
('Tokyo', '2026-05-05', 700);
SELECT * FROM mnoskov.region_sales;
-- Все четко работает.
-- Задание 4
CREATE TABLE mnoskov.user_metrics
ON CLUSTER clickhouse_cluster
(
region String,
avg_age_state AggregateFunction(avg, UInt8),
active_users_state AggregateFunction(uniq, UInt64)
)
ENGINE = AggregatingMergeTree
ORDER BY region;
CREATE TABLE mnoskov.user_metrics_source
ON CLUSTER clickhouse_cluster
(
region String,
age UInt8,
user_id UInt64
)
ENGINE = MergeTree
ORDER BY region;
INSERT INTO mnoskov.user_metrics_source
(region, age, user_id)
VALUES
('Moscow', 25, 1001),
('Moscow', 30, 1002),
('Moscow', 22, 1003),
('Moscow', 25, 1001),
('Berlin', 40, 2001),
('Berlin', 35, 2002),
('Berlin', 29, 2003),
('Berlin', 35, 2002),
('Paris', 31, 3001),
('Paris', 28, 3002),
('Paris', 45, 3003),
('Paris', 31, 3001),
('London', 50, 4001),
('London', 41, 4002),
('London', 38, 4003),
('London', 41, 4002),
('Tokyo', 27, 5001),
('Tokyo', 33, 5002),
('Tokyo', 29, 5003),
('Tokyo', 33, 5002);
SELECT * FROM mnoskov.user_metrics_source;
INSERT INTO mnoskov.user_metrics
SELECT
region,
avgState(age) AS avg_age_state,
uniqState(user_id) AS active_users_state
FROM
mnoskov.user_metrics_source
GROUP BY
region;
SELECT
region,
avgMerge(avg_age_state),
uniqMerge(active_users_state)
FROM
mnoskov.user_metrics
GROUP BY
region;
-- Че то кликхаус странно себя ведет, то таблицы сами очищаются, то удаленные таблицы воскресают.