Created
March 2, 2025 20:14
-
-
Save malbontee/e42fa57d1933767a847785b682ffaa24 to your computer and use it in GitHub Desktop.
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.product_id = p.product_id | |
--GROUP BY p.name | |
--HAVING AVG(s.price) > 50 | |
-- 2. Вывести количество товаров каждой категории, средняя цена поставки которых больше 100 гривен | |
--SELECT c.name AS category_name, COUNT(p.product_id) AS product_count | |
--FROM Category c | |
--JOIN Product p ON c.category_id = p.category_id | |
--JOIN Delivery d ON d.product_id = p.product_id | |
--GROUP BY c.name | |
--HAVING AVG(d.price) > 100 | |
-- 3. Показать категории "Фрукты" и "Конфеты", их товары и общую сумму их продажи | |
--SELECT p.name, c.name AS category_name, SUM(s.price * s.quantity) AS total_sales | |
--FROM Category c | |
--JOIN Product p ON c.category_id = p.category_id | |
--JOIN Sale s ON s.product_id = p.product_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.product_id = p.product_id | |
--JOIN Category c ON c.category_id = p.category_id | |
--WHERE c.name LIKE '%Фрукты%' OR c.name LIKE '%Овощи%' | |
-- 4. Показать информацию о производителе, его полном адресе, и количестве товаров, которые он выпускает. | |
-- Общая стоимость продаж товаров каждого производителя должна быть от 2000 до 5000 гривен. | |
--SELECT | |
-- pr.name AS producer_name, | |
-- CONCAT(co.name, ', ', ct.name, ', ', a.street) AS full_address, | |
-- COUNT(p.product_id) AS product_count, | |
-- SUM(s.price * s.quantity) AS total_sales | |
--FROM Product p | |
--JOIN Producer pr ON p.producer_id = pr.producer_id | |
--JOIN Address a ON pr.address_id = a.address_id | |
--JOIN City ct ON a.city_id = ct.city_id | |
--JOIN Region r ON ct.region_id = r.region_id | |
--JOIN Country co ON r.country_id = co.country_id | |
--JOIN Sale s ON s.product_id = p.product_id | |
--GROUP BY pr.name, co.name, r.name, ct.name, a.street | |
--HAVING SUM(s.price * s.quantity) BETWEEN 2000 AND 5000 | |
-- 5. Показать категорию, товаров которой в магазине меньше всего | |
--SELECT TOP 1 c.name AS category_name, COUNT(p.product_id) AS product_count | |
--FROM Product p | |
--JOIN Category c ON p.category_id = c.category_id | |
--GROUP BY c.name | |
--ORDER BY product_count ASC | |
-- 6. Показать количество товаров каждой категории, при этом учитывая только те товары, стоимость поставки которых превышала 400 гривен. | |
-- Учитываются только три определённых поставщика. | |
--SELECT | |
-- c.name AS category_name, | |
-- COUNT(p.product_id) AS product_count | |
--FROM Product p | |
--JOIN Category c ON p.category_id = c.category_id | |
--JOIN Delivery d ON p.product_id = d.product_id | |
--JOIN Supplier s ON d.supplier_id = s.supplier_id | |
--WHERE d.price > 400 AND s.name IN ('ООО Рога и копыта', 'ЗАО Мега Поставка', 'ИП Нова Товара') | |
--GROUP BY c.name |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment