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