-- Задание 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, тк нужно вывести имя для каждого лога а не юзера.