added 11ый task in 10.5 Poryadok

This commit is contained in:
Dmitry Medvedev
2026-07-03 00:06:47 +05:00
parent 3581c6c741
commit e20f0077dc
+37 -1
View File
@@ -244,4 +244,40 @@
1. чтение таблицы products
2. Группировка с фильтрацией групп (hash aggregate)
3. Сортировка Sort key
4. LIMIT
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 мс соответственно)