Запросы - Синтаксис (Task 1 and 2) v2
This commit is contained in:
@@ -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 - нет в классическом понимании, а скорее в итеративном смысле.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user