Работа над ошибками: 'Синтаксис'.
Практика: 'JOIN' - 'Массивы, Map и вложенные структуры*' - 'Партиции' - 'Индексы'.
This commit is contained in:
+115
@@ -0,0 +1,115 @@
|
||||
-- Задание 1
|
||||
|
||||
CREATE TABLE mnoskov.raw_data1
|
||||
ON CLUSTER clickhouse_cluster (
|
||||
user_id String,
|
||||
balance String,
|
||||
created_at String
|
||||
)
|
||||
ENGINE = ReplicatedMergeTree(
|
||||
'/clickhouse/tables/{shard}/mnoskov/raw_data1',
|
||||
'{replica}'
|
||||
)
|
||||
ORDER BY tuple();
|
||||
|
||||
SELECT
|
||||
user_id,
|
||||
balance,
|
||||
created_at
|
||||
FROM (
|
||||
SELECT
|
||||
user_id,
|
||||
toDecimal64OrNull(balance,2) AS balance,
|
||||
toDateTime64OrNull(created_at, 3) AS created_at
|
||||
FROM
|
||||
mnoskov.raw_data1
|
||||
)
|
||||
WHERE
|
||||
balance IS NOT NULL AND created_at IS NOT NULL;
|
||||
|
||||
|
||||
-- Задание 2
|
||||
|
||||
CREATE TABLE mnoskov.events
|
||||
ON CLUSTER clickhouse_cluster (
|
||||
event_id String,
|
||||
event_date String, -- форматы: "2023-01-01", "01.02.2023", "invalid"
|
||||
event_time String -- форматы: "12:30:45", "25:99:99"
|
||||
)
|
||||
ENGINE = ReplicatedMergeTree(
|
||||
'/clickhouse/tables/{shard}/mnoskov/events',
|
||||
'{replica}'
|
||||
)
|
||||
ORDER BY
|
||||
event_id;
|
||||
|
||||
SELECT * FROM mnoskov.events;
|
||||
|
||||
|
||||
SELECT
|
||||
event_id,
|
||||
event_datetime
|
||||
FROM (
|
||||
SELECT
|
||||
event_id,
|
||||
parseDateTimeBestEffortOrNull(concat(event_date, ' ', event_time)) AS event_datetime
|
||||
FROM
|
||||
mnoskov.events
|
||||
)
|
||||
ORDER BY
|
||||
event_datetime;
|
||||
|
||||
|
||||
-- Задание 3
|
||||
|
||||
CREATE TABLE mnoskov.user_activity
|
||||
ON CLUSTER clickhouse_cluster
|
||||
(
|
||||
user_id UInt32,
|
||||
actions String -- JSON: ["login", "purchase", "logout"]
|
||||
)
|
||||
ENGINE = ReplicatedMergeTree(
|
||||
'/clickhouse/tables/{shard}/mnoskov/user_activity',
|
||||
'{replica}'
|
||||
)
|
||||
ORDER BY
|
||||
user_id;
|
||||
|
||||
SELECT
|
||||
user_id,
|
||||
count(*) as user_actions_cnt
|
||||
FROM
|
||||
mnoskov.user_activity
|
||||
WHERE
|
||||
has(JSONExtract(actions, 'Array(String)'), 'purchase')
|
||||
GROUP BY
|
||||
user_id
|
||||
ORDER BY
|
||||
user_id;
|
||||
|
||||
|
||||
-- Задание 4
|
||||
|
||||
CREATE TABLE mnoskov.sensor_data
|
||||
ON CLUSTER clickhouse_cluster
|
||||
(
|
||||
sensor_id UInt32,
|
||||
value Float64,
|
||||
status Enum('ok' = 1, 'error' = 2)
|
||||
)
|
||||
ENGINE = ReplicatedMergeTree(
|
||||
'/clickhouse/tables/{shard}/mnoskov/sensor_data',
|
||||
'{replica}'
|
||||
)
|
||||
ORDER BY sensor_id;
|
||||
|
||||
--1-2.
|
||||
SELECT
|
||||
toString(status) AS str_status,
|
||||
avg(value) AS avg_value
|
||||
FROM
|
||||
mnoskov.sensor_data
|
||||
GROUP BY
|
||||
str_status;
|
||||
--3
|
||||
-- не понял задание. все строки в value можно преобразовать в Decimal(10,2), потому что value - Float64, а он все null переделывает в 0.
|
||||
Reference in New Issue
Block a user