🐛 Типичные ошибки: Практикум 5
⚡ Топ-3 ошибки
- Фильтр агрегата через
WHEREвместоHAVING. - Забытая база данных — не выполнен
USE northwind. - Регистр в строковых фильтрах.
Ошибка 1. COUNT(*) вместо COUNT(id) или COUNT(column)
В задании 2 нужно считать товары. COUNT(*) и COUNT(id) дадут одинаковый результат, если в id нет NULL. Но в задании 4 важно использовать WHERE minimum_reorder_quantity IS NULL, и COUNT(*) там всё ещё вернёт все строки, включая с NULL — что правильно, так как мы считаем строки с отсутствующим значением.
Ошибка 2. WHERE вместо HAVING
-- Неправильно
SELECT category, COUNT(id)
FROM products
WHERE COUNT(id) >= 3
GROUP BY category;
-- Правильно
SELECT category, COUNT(id)
FROM products
GROUP BY category
HAVING COUNT(id) >= 3;
Ошибка 3. Регистр в LIKE
В задании 7 ищем 'box'. В данных может быть 'Box', 'BOX' и т.д. Используйте LOWER(quantity_per_unit) LIKE '%box%'.
Ошибка 4. Не выбрана база данных
Если не выполнить USE northwind;, запросы могут обращаться к другой схеме или выдать ошибку Table 'products' doesn't exist.
Ошибка 5. BETWEEN и границы
BETWEEN 10 AND 20 включает обе границы. В задании 6 это соответствует условию «от 10 до 20 включительно».