Дана таблица Books (поля: Title, Genre, Price, Qty):
1 | Абай жолы | Роман | 2500 | 6
2 | Алгебра | Учебник | 1800 | 8
3 | Физика | Учебник | 1400 | 9
4 | Қобыланды | Эпос | 2200 | 4
5 | Қан мен тер | Роман | 3000 | 7
6 | Геометрия | Учебник | 2000 | 3
Выполнен запрос:
SELECT Genre, SUM(Qty) FROM Books WHERE Price > 1500 GROUP BY Genre HAVING SUM(Qty) > 10;
Какой результат будет получен?
Показать ответ и разборСкрыть ответ и разбор
Верный ответ
- CРоман — 13; Учебник — 11
Разбор
1) Условие WHERE Price > 1500 отбирает строки 1, 2, 4, 5 и 6; строка «Физика» (цена 1400) отбрасывается. 2) Группировка по жанру и сумма Qty: «Роман» — 6 + 7 = 13, «Учебник» — 8 + 3 = 11, «Эпос» — 4. 3) HAVING SUM(Qty) > 10 оставляет только группы с суммой больше 10, поэтому группа «Эпос» исключается. Результат: «Роман — 13; Учебник — 11». Вариант «Роман — 13; Учебник — 20» получается, если не учесть WHERE, а вариант с «Эпос — 4» — если не учесть HAVING. Вариант «Роман — 2; Учебник — 2» даёт количество строк, а не сумму.