Работа над ошибками: 'Синтаксис'.
Практика: 'JOIN' - 'Массивы, Map и вложенные структуры*' - 'Партиции' - 'Индексы'.
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
-- Задание 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, тк нужно вывести имя для каждого лога а не юзера.
|
||||
Reference in New Issue
Block a user