Skip to content

Instantly share code, notes, and snippets.

@malbontee
Created March 2, 2025 20:14
Show Gist options
  • Save malbontee/e42fa57d1933767a847785b682ffaa24 to your computer and use it in GitHub Desktop.
Save malbontee/e42fa57d1933767a847785b682ffaa24 to your computer and use it in GitHub Desktop.
group by & having
-- 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