From 8c6daac203ecdde1ad934919d6a763f36e85e6a9 Mon Sep 17 00:00:00 2001 From: Bonifatsiy Date: Mon, 20 Apr 2026 03:32:36 +0400 Subject: [PATCH] =?UTF-8?q?=D0=97=D0=B0=D0=BF=D1=80=D0=BE=D1=81=D1=8B=20-?= =?UTF-8?q?=20=D0=A1=D0=B8=D0=BD=D1=82=D0=B0=D0=BA=D1=81=D0=B8=D1=81=20(Ta?= =?UTF-8?q?sk=201=20and=202)=20v2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Homework/Запросы - Синтаксис.sql | 32 +++++++++++++++---- 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/dsolovianov/clickhouse/Homework/Запросы - Синтаксис.sql b/dsolovianov/clickhouse/Homework/Запросы - Синтаксис.sql index 47d7629..abd02d7 100644 --- a/dsolovianov/clickhouse/Homework/Запросы - Синтаксис.sql +++ b/dsolovianov/clickhouse/Homework/Запросы - Синтаксис.sql @@ -2,7 +2,7 @@ --! Задача 1 !-- -DROP TABLE IF EXISTS users ON CLUSTER clickhouse_cluster; +DROP TABLE IF EXISTS dsolovianov.users ON CLUSTER clickhouse_cluster SYNC; CREATE TABLE users ON CLUSTER clickhouse_cluster @@ -11,8 +11,11 @@ ON CLUSTER clickhouse_cluster name String, age UInt8, country String, - is_active UInt8 -) ENGINE = MergeTree() + is_active Boolean +) ENGINE = ReplicatedMergeTree( + '/clickhouse/tables/{shard}/dsolovianov/users_v2', + '{replica}' +) ORDER BY user_id; INSERT INTO users VALUES @@ -73,6 +76,12 @@ SELECT FROM users GROUP BY country; +SELECT + country, + uniqExact(country) as unique_countries --возвращает точное количество уникальных значений в столбце country +FROM users +GROUP BY country; + --Для каждой страны выведи минимальный и максимальный возраст. SELECT country, @@ -90,6 +99,18 @@ FROM users GROUP BY country 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 !-- DROP TABLE IF EXISTS dsolovianov.events ON CLUSTER clickhouse_cluster SYNC; @@ -104,7 +125,7 @@ ENGINE = ReplicatedMergeTree( '/clickhouse/tables/{shard}/dsolovianov/events_v2', '{replica}' ) -ORDER BY user_id; +ORDER BY (user_id, event_time); INSERT INTO dsolovianov.events (user_id, event_time, event_type) VALUES (1, '2025-07-17 09:00:00', 'click'), @@ -220,5 +241,4 @@ ORDER BY re.user_id, re.event_time; Вопрос: поддерживает ли ClickHouse многоуровневые или рекурсивные CTE? многоуровневые CTE - да рекурсивные CTE - нет в классическом понимании, а скорее в итеративном смысле. -*/ - +*/ \ No newline at end of file