From e20f0077dcc20b368ea9c73f40cf5479a764f4b2 Mon Sep 17 00:00:00 2001 From: Dmitry Medvedev Date: Fri, 3 Jul 2026 00:06:47 +0500 Subject: [PATCH] =?UTF-8?q?added=2011=D1=8B=D0=B9=20task=20in=2010.5=20Por?= =?UTF-8?q?yadok?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dmedvedev/10.5.Porydok.sql | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/dmedvedev/10.5.Porydok.sql b/dmedvedev/10.5.Porydok.sql index bb85eeb..326ab1e 100644 --- a/dmedvedev/10.5.Porydok.sql +++ b/dmedvedev/10.5.Porydok.sql @@ -244,4 +244,40 @@ 1. чтение таблицы products 2. Группировка с фильтрацией групп (hash aggregate) 3. Сортировка Sort key - 4. LIMIT \ No newline at end of file + 4. LIMIT + + +- **Задача 11** — Подзапросы и порядок + + SELECT + u.name, + u.age, + (SELECT COUNT(*) + FROM orders o + WHERE o.user_id = u.id) AS orders_count + FROM users u + WHERE u.country = 'Россия' + ORDER BY orders_count DESC; + + **❓ Вопросы:** + + 1. Когда выполняется подзапрос в `SELECT`? + В самом начале. + + 2. Можно ли использовать алиас `orders_count` в `WHERE`? + Нет, потому что WHERE не видит алиасы + + 3. Можно ли использовать его в `ORDER BY`? + Да, потому что order by выполняется после SELECT + + 4. Перепиши этот запрос через `JOIN`. Какой вариант быстрее? Проверь с `EXPLAIN ANALYZE`! 0.065-0.15 + SELECT + u.name, + u.age, + COUNT(o.id) AS orders_count + FROM users u + LEFT JOIN orders o ON o.user_id = u.id + GROUP BY u.name, u.age + ORDER BY orders_count DESC; + + Второй запрос через JOIN выполняется дольше (0.06 и 0.08 мс соответственно) \ No newline at end of file