task up to arrays
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
--page_views table
|
||||
create table page_views (
|
||||
user_id UInt64,
|
||||
url String,
|
||||
view_time DateTime
|
||||
)
|
||||
Engine = MergeTree
|
||||
Order by (user_id, view_time)
|
||||
Partition by toYYYYMM(view_time)
|
||||
|
||||
-- users table
|
||||
create table users(
|
||||
id UInt64,
|
||||
name String,
|
||||
updated_at DateTime
|
||||
)
|
||||
ENGINE = ReplacingMergeTree(updated_at)
|
||||
Order by id;
|
||||
|
||||
-- region_sales table
|
||||
create table region_sales(
|
||||
region String,
|
||||
date Date,
|
||||
sales UInt64
|
||||
)
|
||||
ENGINE = SummingMergeTree
|
||||
Partition by toYYYYMM(date)
|
||||
Order by (region, date)
|
||||
|
||||
insert into mdrozdov.region_sales (region, date, sales)
|
||||
values ('Russia', '2025-01-14', 30), ('Russia', '2025-01-16', 22), ('USA', '2025-01-14', 1400)
|
||||
OPTIMIZE TABLE mdrozdov.region_sales FINAL
|
||||
|
||||
-- user_metrics table
|
||||
create table mdrozdov.user_metrics (
|
||||
region String,
|
||||
avg_age_state AggregateFunction(avg, UInt8),
|
||||
active_users_state AggregateFunction(uniq, UInt64)
|
||||
)
|
||||
Engine = AggregatingMergeTree
|
||||
Order by region
|
||||
|
||||
INSERT INTO mdrozdov.user_metrics
|
||||
SELECT
|
||||
'Moscow' AS region,
|
||||
avgState(toUInt8(25)) AS avg_age_state,
|
||||
uniqState(toUInt64(100)) AS active_users_state
|
||||
UNION ALL
|
||||
SELECT
|
||||
'Moscow',
|
||||
avgState(toUInt8(30)),
|
||||
uniqState(toUInt64(50))
|
||||
UNION ALL
|
||||
SELECT
|
||||
'SPB',
|
||||
avgState(toUInt8(20)),
|
||||
uniqState(toUInt64(10));
|
||||
|
||||
SELECT
|
||||
region,
|
||||
avgMerge(avg_age_state) AS avg_age,
|
||||
uniqMerge(active_users_state) AS active_users
|
||||
FROM mdrozdov.user_metrics
|
||||
GROUP BY region
|
||||
Reference in New Issue
Block a user