Запросы - Синтаксис (Task 1 and 2) v2

This commit is contained in:
Bonifatsiy
2026-04-20 03:32:36 +04:00
parent 7dcea750a3
commit 8c6daac203
@@ -2,7 +2,7 @@
--! Задача 1 !-- --! Задача 1 !--
DROP TABLE IF EXISTS users ON CLUSTER clickhouse_cluster; DROP TABLE IF EXISTS dsolovianov.users ON CLUSTER clickhouse_cluster SYNC;
CREATE TABLE users CREATE TABLE users
ON CLUSTER clickhouse_cluster ON CLUSTER clickhouse_cluster
@@ -11,8 +11,11 @@ ON CLUSTER clickhouse_cluster
name String, name String,
age UInt8, age UInt8,
country String, country String,
is_active UInt8 is_active Boolean
) ENGINE = MergeTree() ) ENGINE = ReplicatedMergeTree(
'/clickhouse/tables/{shard}/dsolovianov/users_v2',
'{replica}'
)
ORDER BY user_id; ORDER BY user_id;
INSERT INTO users VALUES INSERT INTO users VALUES
@@ -73,6 +76,12 @@ SELECT
FROM users FROM users
GROUP BY country; GROUP BY country;
SELECT
country,
uniqExact(country) as unique_countries --возвращает точное количество уникальных значений в столбце country
FROM users
GROUP BY country;
--Для каждой страны выведи минимальный и максимальный возраст. --Для каждой страны выведи минимальный и максимальный возраст.
SELECT SELECT
country, country,
@@ -90,6 +99,18 @@ FROM users
GROUP BY country GROUP BY country
ORDER BY user_country DESC; ORDER BY user_country DESC;
--Всё вместе
SELECT
country,
COUNT(*) as user_country,
SUM(is_active) as active_users,
MIN(age) as min_age,
MAX(age) as max_age,
uniqExact(country) as unique_countries
FROM users
GROUP BY country
ORDER BY country;
--! Задача 2 !-- --! Задача 2 !--
DROP TABLE IF EXISTS dsolovianov.events ON CLUSTER clickhouse_cluster SYNC; DROP TABLE IF EXISTS dsolovianov.events ON CLUSTER clickhouse_cluster SYNC;
@@ -104,7 +125,7 @@ ENGINE = ReplicatedMergeTree(
'/clickhouse/tables/{shard}/dsolovianov/events_v2', '/clickhouse/tables/{shard}/dsolovianov/events_v2',
'{replica}' '{replica}'
) )
ORDER BY user_id; ORDER BY (user_id, event_time);
INSERT INTO dsolovianov.events (user_id, event_time, event_type) VALUES INSERT INTO dsolovianov.events (user_id, event_time, event_type) VALUES
(1, '2025-07-17 09:00:00', 'click'), (1, '2025-07-17 09:00:00', 'click'),
@@ -221,4 +242,3 @@ ORDER BY re.user_id, re.event_time;
многоуровневые CTE - да многоуровневые CTE - да
рекурсивные CTE - нет в классическом понимании, а скорее в итеративном смысле. рекурсивные CTE - нет в классическом понимании, а скорее в итеративном смысле.
*/ */