Files
homework/mnoskov/clickhouse/Практика clickhouse/2. Запросы/2. JOIN/practice_join.sql
T
mnoskov ae208a76fb Работа над ошибками: 'Синтаксис'.
Практика: 'JOIN' - 'Массивы, Map и вложенные структуры*' - 'Партиции' - 'Индексы'.
2026-05-18 16:55:22 +03:00

57 lines
1.6 KiB
SQL

-- Задание 1
SELECT
pro.product_id,
pro.name,
pri.price
FROM
mnoskov.products pro
ANY LEFT JOIN
mnoskov.prices pri ON pro.product_id = pri.product_id;
-- 2 Выберется случайная из цен.
-- 3 ALL LEFT JOIN - работает также как и LEFT JOIN. Его избегают потому что он тянет больше строк в оперативную память.
-- Задание 2
SELECT
o.time,
o.symbol,
o.size,
t.price
FROM
mnoskov.orders o
ASOF JOIN
mnoskov.ticks t ON o.symbol = t.symbol AND t.time <= o.time
WHERE symbol = 'AAPL';
-- Потому что дата сделки и дата последней фиксации цены - разные.
-- Задание 3
SELECT
user_id,
name
FROM
mnoskov.users
WHERE user_id IN (
SELECT user_id
FROM mnoskov.payments
WHERE amount > 1000
);
-- 3 Потому что это фильтрация по существованию. Как оптимизируется не знаю, наверное как подзапрос.
-- Задание 4
SELECT
bl.user_id,
u.name AS user_name,
bl.event_time,
bl.event_type
FROM
mnoskov.big_logs bl
JOIN
mnoskov.users u ON bl.user_id = u.user_id;
-- 2 потому что таблица users меньше, а значит в оператику полетит меньше данных.
-- 3 если user_id уникален, то нужно выбирать ALL, так как дублей нет. В текущем задании дубли есть, но мы все равно выбираем ALL, тк нужно вывести имя для каждого лога а не юзера.