Created
February 17, 2025 07:38
-
-
Save hmel1990/85a0f035c390f18aa2759662cf275108 to your computer and use it in GitHub Desktop.
DZ GROUP BY HAVING
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
1. Показать товары, средняя цена продажи которых была больше 50 гривен | |
SELECT p.name | |
FROM Product p | |
JOIN Sale s ON s.id_product = p.id | |
GROUP BY p.name | |
HAVING AVG (s.price) > 50 | |
2. Вывести количество товаров каждой категории, средняя цена поставки которых больше 100 гривен | |
SELECT c.name, COUNT(p.name) AS "количество товаров данной категории" | |
FROM Category c | |
JOIN Product p ON c.id = p.id_category | |
JOIN Delivery d ON d.id_product = p.id | |
GROUP BY c.name | |
HAVING AVG(d.price) > 100; | |
3. Показать категории "Фрукты" и "Конфеты", принадлежащие им товары, и общую сумму их продажи | |
============================= Вариант с HAVING ====================================== | |
SELECT p.name, c.name AS "категория", SUM (s.price*s.quantity) AS "всего продано" | |
FROM Category c | |
JOIN Product p ON c.id = p.id_category | |
JOIN Sale s ON s.id_product = p.id | |
GROUP BY c.name, p.name | |
HAVING c.name LIKE '%фрукти%' OR c.name LIKE '%овоч%' | |
UNION ALL | |
SELECT 'Total:', NULL, SUM(s.price * s.quantity) | |
FROM Sale s | |
JOIN Product p ON s.id_product = p.id | |
JOIN Category c ON c.id = p.id_category | |
WHERE c.name LIKE '%фрукти%' OR c.name LIKE '%овоч%' | |
============================ Вариант с WHERE ======================================= | |
SELECT p.name, c.name AS "категория", s.price*s.quantity AS "всего продано" | |
FROM Category c | |
JOIN Product p ON c.id = p.id_category | |
JOIN Sale s ON s.id_product = p.id | |
WHERE c.name LIKE '%фрукти%' OR c.name LIKE '%овоч%' | |
UNION ALL | |
SELECT 'Total:', NULL, SUM(s.price * s.quantity) | |
FROM Sale s | |
JOIN Product p ON s.id_product = p.id | |
JOIN Category c ON c.id = p.id_category | |
WHERE c.name LIKE '%фрукти%' OR c.name LIKE '%овоч%' | |
4. Показать информацию о производителе, его полном адресе, и количестве товаров, которые он выпускает. | |
Общая стоимость продаж товаров каждого производителя при этом должна быть от 500 до 2000 гривен | |
SELECT pr.name AS "производитель", CONCAT (ctr.name, ', ', r.name, ', ',ct.name, ', ',a.street) AS "адрес производителя", COUNT(p.name) AS "количество товаров" | |
FROM Product p | |
JOIN Producer pr ON p.id_producer = pr.id | |
JOIN Address a ON pr.id_address = a.id | |
JOIN City ct ON a.id_city = ct.id | |
JOIN Region r ON ct.id_region = r.id | |
JOIN Country ctr ON r.id_country = ctr.id | |
JOIN Sale s ON s.id_product = p.id | |
GROUP BY pr.name, ctr.name, r.name, ct.name, a.street | |
HAVING SUM (s.price * s.quantity) BETWEEN 500 AND 2000 | |
5. Показать категорию, товаров которой в магазине меньше всего | |
SELECT TOP 1 c.name, COUNT(p.name) AS "количество товаров данной категории" | |
FROM Category c | |
JOIN Product p ON c.id = p.id_category | |
GROUP BY c.name | |
ORDER BY 2 | |
6. Показать количество товаров каждой категории, при этом учитывая только те товары, стоимость поставки которых | |
превышала 400 гривен. Условие: выведенная информация касается только трёх определённых поставщиков | |
SELECT c.name, COUNT(p.name) AS "количество товаров данной категории" | |
FROM Category c | |
JOIN Product p ON c.id = p.id_category | |
JOIN Delivery d ON d.id_product = p.id | |
JOIN Supplier s ON d.id_supplier = s.id | |
WHERE s.name LIKE '%Картофка%' OR s.name LIKE '%Котигорошко%' OR s.name LIKE '%Швидко%' | |
GROUP BY c.name | |
HAVING SUM (d.quantity*d.price) > 400 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment