Created
February 13, 2025 17:07
-
-
Save hmel1990/cd2af6616dff50a5585911de58943f97 to your computer and use it in GitHub Desktop.
DZ 2025-02-12
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
INNER JOINS: | |
1. Показать названия и категории товаров, поставщиками которых являются ООО "Паньки" или ООО «Какие люди» | |
SELECT p.name AS "названия товаров", c.name AS "категории товаров", s.name AS "поставщики" | |
FROM Product p | |
JOIN Category c ON p.id_category = c.id | |
JOIN Delivery d ON d.id_product = p.id | |
JOIN Supplier s ON s.id = d.id_supplier WHERE s.name LIKE '%бусік%' OR s.name LIKE '%картофка%' | |
2. Выбрать все товары с указанием их поставщика, имя производителя которых не содержит букв [АКМ], и категория которых не "Крупы" | |
SELECT p.name AS "названия товаров", c.name AS "категории товаров", s.name AS "поставщики" | |
FROM Product p | |
JOIN Category c ON p.id_category = c.id | |
JOIN Delivery d ON d.id_product = p.id | |
JOIN Supplier s ON s.id = d.id_supplier | |
JOIN Producer pr ON p.id_producer = pr.id | |
WHERE pr.name NOT LIKE '%акм%' AND c.name NOT LIKE '%крупи%' -- NOT LIKE '%а%к%м%' | |
3. Показать названия и категории товаров с указанием поставщика и страны производителя. Условие: страна производителя не Украина, | |
не Молдова и не Польша, цена поставки менее 50 гривен, а дата поставки от 10.02.2025 и по сей день | |
SELECT p.name AS "названия товаров", c.name AS "категории товаров", s.name AS "поставщики", ctr.name AS "странa производителя" | |
FROM Product p | |
JOIN Category c ON p.id_category = c.id | |
JOIN Delivery d ON d.id_product = p.id | |
JOIN Supplier s ON d.id_supplier = s.id | |
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 | |
WHERE ctr.name LIKE '%Україна%' | |
OR ctr.name LIKE '%Молдова%' | |
OR ctr.name LIKE '%Польша%' | |
AND d.price < 50 | |
AND d.date_of_delivery BETWEEN '2025-10-02' AND CAST (GETDATE() AS DATE) | |
4. Показать все кондитерские и безалкогольные товары, которых было продано более 100. Показать информацию о поставщике и производителе | |
SELECT p.name AS "названия товаров", c.name AS "категории товаров", s.name AS "поставщики", pr.name AS "Производитель" | |
FROM Product p | |
JOIN Category c ON p.id_category = c.id | |
JOIN Delivery d ON d.id_product = p.id | |
JOIN Supplier s ON d.id_supplier = s.id | |
JOIN Producer pr ON p.id_producer = pr.id | |
JOIN Sale sl ON sl.id_product = p.id | |
WHERE c.name LIKE '%солодощ%' | |
OR c.name LIKE '%напо%' | |
AND sl.quantity>100 | |
5. Сделать запрос на выборку информации о поставке товаров в следующем виде: название товара и его поставщика, категории, | |
дата поставки и общую стоимость поставленных товаров. Условие: только трёх указанных в запросе поставщиков. | |
Отсортировать названия товаров в алфавитном порядке | |
SELECT TOP 3 | |
p.name AS "названия товаров", | |
s.name AS "поставщики", | |
c.name AS "категории товаров", | |
d.date_of_delivery AS "дата поставки", | |
d.quantity * d.price AS "общая стоимость" | |
FROM | |
Product p | |
JOIN Category c ON p.id_category = c.id | |
JOIN Delivery d ON d.id_product = p.id | |
JOIN Supplier s ON d.id_supplier = s.id | |
JOIN Sale sl ON sl.id_product = p.id | |
ORDER BY p.name | |
6. Сделать запрос на выборку о продажах товаров в следующем виде: название товара и его производителя, полный адрес | |
(страна, город, улица) производителя в одной ячейке, категории, дате продажи и общей стоимости продажи. | |
Условие: выведенная информация не должна касаться двух указанных в запросе производителей. | |
Отсортировать общую стоимость продаж в порядке убывания | |
SELECT | |
p.name AS "названия товаров", | |
pr.name AS "производитель", | |
CONCAT (ctr.name, ', ', r.name, ', ',ct.name, ', ',a.street) AS "адрес производителя", | |
c.name AS "категории товаров", | |
sl.date_of_sale AS "дата продажи", | |
sl.quantity*sl.price AS "общая стоимость" | |
FROM | |
Product p | |
JOIN Category c ON p.id_category = c.id | |
JOIN Delivery d ON d.id_product = p.id | |
JOIN Supplier s ON d.id_supplier = s.id | |
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 sl ON sl.id_product = p.id | |
WHERE pr.name NOT LIKE '%Pepsi%' AND pr.name NOT LIKE '%Coca-Cola%' | |
ORDER BY "общая стоимость" DESC | |
======================================================================================================================= | |
OUTER JOINS: | |
1. Показать названия товаров и их производителей, но и в том числе тех производителей, у которых нет товаров | |
SELECT | |
p.name AS "названия товаров", | |
pr.name AS "производитель" | |
FROM Product p RIGHT JOIN Producer pr | |
ON p.id_producer = pr.id | |
2. Показать только те категории, к которым не относится ни один товар | |
SELECT | |
c.name AS "категории товаров" | |
FROM Product p | |
RIGHT JOIN Category c ON p.id_category = c.id | |
WHERE p.id IS NULL | |
3. Показать названия товаров, даты их поставки и поставщиков, в том числе тех поставщиков, которые ничего не успели поставить | |
SELECT | |
p.name AS "названия товаров", | |
d.date_of_delivery AS "дата поставки", | |
s.name AS "поставщики" | |
FROM | |
Product p | |
JOIN Delivery d ON d.id_product = p.id | |
RIGHT JOIN Supplier s ON d.id_supplier = s.id | |
ORDER BY p.name | |
4. Показать области (регионы), в которых нет ни одного производителя (EXCEPT) | |
SELECT | |
r.name AS "Области" | |
FROM Region r | |
EXCEPT | |
SELECT | |
r.name | |
FROM Region r | |
JOIN City ct ON ct.id_region = r.id | |
JOIN Address a ON a.id_city = ct.id | |
JOIN Producer pr ON pr.id_address = a.id | |
5. Показать те названия категорий, где нет товаров фирмы ООО «Нли Ю» (EXCEPT) | |
SELECT | |
с.name AS "Категория" | |
FROM Category с | |
EXCEPT | |
SELECT | |
c.name | |
FROM Category c | |
JOIN Product p ON p.id_category = c.id WHERE p.name LIKE '%Нли Ю%' | |
6. Показать производителей, которые не выпускают продукты молочной категории (EXCEPT) | |
SELECT | |
pr.name AS "Производители" | |
FROM Producer pr | |
EXCEPT | |
SELECT | |
pr.name | |
FROM Producer pr | |
JOIN Product p ON p.id_producer = pr.id | |
JOIN Category c ON p.id_category = c.id | |
WHERE c.name LIKE '%молоч%' |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment