Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save Vladislav-Melenchuk/8f9bacad0bc108973df1fc59b2debf20 to your computer and use it in GitHub Desktop.
Save Vladislav-Melenchuk/8f9bacad0bc108973df1fc59b2debf20 to your computer and use it in GitHub Desktop.
HW_SQL
SUBQUERIES (в решении обязательно использовать минимум один подзапрос!):
1. Показать самый популярный товар магазина (больше всего раз продавался)
SELECT p.name as Popular
FROM Product p
WHERE p.id = (
SELECT TOP 1 s.id_product
FROM Sale s
GROUP BY s.id_product
ORDER BY sum(s.quantity) DESC
)
2. Если общее количество товаров всех категорий принять за 100%, необходимо посчитать, сколько товаров каждой категории
(в процентном отношении) было продано
SELECT
c.name AS Категория, (SUM(s.quantity) * 100.0) / (SELECT SUM(quantity) FROM Sale)
FROM Sale s
JOIN Product p ON s.id_product = p.id
JOIN Category c ON p.id_category = c.id
GROUP BY c.name
3. Показать названия поставщиков, которые не поставляли йогурт
SELECT s.name
FROM Supplier s
WHERE s.id NOT IN (
SELECT DISTINCT d.id_supplier
FROM Delivery d
JOIN Product p ON d.id_product = p.id
WHERE p.name LIKE '%Йогурт%'
)
5. Показать всех производителей, количество наименований товаров которых в магазине больше, чем количество наименований
всех товаров фирмы ООО «Самтаймс»
SELECT pr.name as Producer
FROM Producer pr
WHERE (
SELECT COUNT(*)
FROM Product p
WHERE p.id_producer = pr.id
) > (
SELECT COUNT(*)
FROM Product p
JOIN Producer pr2 ON p.id_producer = pr2.id
WHERE pr2.name = 'ООО Самтаймс'
)
6. Показать общее количество продаж по каждому дню, начиная от 15.11.2024, и по сей день. Отсортировать по убыванию даты
SELECT s.date_of_sale, SUM(s.quantity)
FROM Sale s
GROUP BY s.date_of_sale
HAVING s.date_of_sale IN (
SELECT DISTINCT date_of_sale
FROM Sale
WHERE date_of_sale >= '2024-11-15'
)
ORDER BY s.date_of_sale DESC
============================================================================================================
CREATE TABLE:
1. написать запросы на создание шести таблиц БД Издательства
CREATE TABLE Country (
id int PRIMARY KEY identity(1, 1),
name VARCHAR(100) NOT NULL
)
CREATE TABLE Shops (
id int PRIMARY KEY identity(1, 1),
name VARCHAR(150) NOT NULL,
id_country INT NOT NULL,
FOREIGN KEY (id_country) REFERENCES Country(id)
)
CREATE TABLE Authors (
id int PRIMARY KEY identity(1, 1),
firstname VARCHAR(100) NOT NULL,
lastname VARCHAR(100) NOT NULL,
id_country INT NOT NULL,
FOREIGN KEY (id_country) REFERENCES Country(id)
)
CREATE TABLE Themes (
id int PRIMARY KEY identity(1, 1),
name VARCHAR(100) NOT NULL
)
CREATE TABLE Books (
id int PRIMARY KEY identity(1, 1),
name VARCHAR(255) NOT NULL,
id_theme INT NOT NULL,
id_author INT NOT NULL,
price DECIMAL(10,2) NOT NULL,
date_of_publish DATE NOT NULL,
pages INT NOT NULL,
FOREIGN KEY (id_theme) REFERENCES Themes(id),
FOREIGN KEY (id_author) REFERENCES Authors(id)
)
CREATE TABLE Sales (
id int PRIMARY KEY identity(1, 1),
id_book INT NOT NULL,
id_shop INT NOT NULL,
date_of_sale DATE NOT NULL,
price DECIMAL(10,2) NOT NULL,
quantity INT NOT NULL,
FOREIGN KEY (id_book) REFERENCES Books(id),
FOREIGN KEY (id_shop) REFERENCES Shops(id)
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment