Деректер қорында Sales(id, product, category, qty, price) кестесі бар:
1, Қалам, Кеңсе, 10, 50
2, Дәптер, Кеңсе, 20, 30
3, Тінтуір, Техника, 3, 1500
4, Пернетақта, Техника, 2, 2500
5, Қарындаш, Кеңсе, 15, 20
6, Флешка, Техника, 5, 2000
7, Папка, Кеңсе, 2, 100
Мынадай сұраныс орындалады:
SELECT category, SUM(qty*price) AS total FROM Sales WHERE qty >= 3 GROUP BY category HAVING SUM(qty*price) > 1500 ORDER BY total DESC;
Сұраныс қандай нәтиже береді?
Жауап пен талдауды көрсетуЖауап пен талдауды жасыру
Дұрыс жауап
- AБір жол: Техника, 14500
Талдау
1) WHERE qty >= 3 топтау алдында жолдарды сүзеді: id 4 (qty = 2) және 7 (qty = 2) жолдары алынып тасталады. 2) category бойынша топтау. Кеңсе: 10·50 + 20·30 + 15·20 = 500 + 600 + 300 = 1400. Техника: 3·1500 + 5·2000 = 4500 + 10000 = 14500. 3) HAVING SUM(qty*price) > 1500 агрегаттаудан кейін топтарды сүзеді: Кеңсе (1400) өтпейді, Техника (14500) өтеді. 4) Бір жол қалады: Техника, 14500. «Екі жол: Техника, 19500 және Кеңсе, 1600» нұсқасы WHERE ескерілмесе шығады, ал «Екі жол: Техника, 14500 және Кеңсе, 1400» нұсқасы HAVING ескерілмесе шығады. «Бір жол: Техника, 19500» нұсқасы қате, себебі қосындыға WHERE алып тастаған жол кірген.