SQL
Вы открыли пиццерию.
Создать таблицу с разными пиццами (id, название, описание, цена).
Создать таблицу с заказами (id, id_заказанной_пиццы, количество, время заказа (под время есть отдельный тип данных).
Заполнить обе таблицы большим количеством данных (5+ пицц, 15+ заказов).
Выполнить следующие запросы:
1. Получить все заказы с подробной информацией о заказанной пицце (select заказ join пицца).
2. Получить все заказы на пиццу ГАВАЙСКАЯ (или другая).
3. Узнать, сколько всего денег вы заработали на пицце ГАВАЙСКАЯ.
4. Получить статистику (ПИЦЦА - КОЛ-ВО ЗАКАЗОВ) (группировка)
Ответы
Тип БД був не вказаний, тому робила для SQLite, ще й сама зрозуміла як з нею працювати
ATTACH DATABASE 'D:\Dev\Pizzeria.sqlite3' AS Pizzeria;
-- створення таблиць
drop TABLE IF EXISTS Піца;
drop TABLE IF EXISTS Замовлення;
CREATE TABLE Піца (
id INTEGER PRIMARY KEY AUTOINCREMENT,
назва TEXT UNIQUE NOT NULL,
опис TEXT,
ціна REAL NOT NULL
);
CREATE TABLE Замовлення (
id INTEGER PRIMARY KEY AUTOINCREMENT,
id_замовленої_піци INTEGER NOT NULL,
кількість INTEGER NOT NULL,
час_замовлення text NOT NULL,
FOREIGN KEY (id_замовленої_піци) REFERENCES Піца (id)
);
-- заповнення тестовими даними
INSERT INTO Піца (назва, опис, ціна) VALUES
('Маргарита', 'Класична піца з соусом та сиром', 10.99),
('Гавайська', 'Піца з ананасами та шинкою', 12.99),
('Пепероні', 'Піца з гострою пепероні', 11.99),
('Вегетаріанська', 'Піца з овочами', 9.99),
('Чотири сири', 'Піца з чотирма видами сиру', 13.99);
INSERT INTO Замовлення (id_замовленої_піци, кількість, час_замовлення ) VALUES
(1, 2, datetime('now', '-25 hours')),
(3, 1, datetime('now', '-24 hours')),
(2, 3, datetime('now', '-23 hours')),
(4, 2, datetime('now', '-22 hours')),
(5, 1, datetime('now', '-21 hours')),
(1, 1, datetime('now', '-20 hours')),
(3, 2, datetime('now', '-18 hours')),
(2, 1, datetime('now', '-17 hours')),
(4, 3, datetime('now', '-16 hours')),
(5, 2, datetime('now', '-15 hours')),
(1, 3, datetime('now', '-14 hours')),
(3, 1, datetime('now', '-13 hours')),
(2, 2, datetime('now', '-12 hours')),
(4, 1, datetime('now', '-11 hours')),
(5, 3, datetime('now', '-10 hours'));
-- Запити
--Отримати всі замовлення з детальною інформацією про замовлену піцу:
SELECT Замовлення.id, Піца.назва, Піца.опис, Піца.ціна, Замовлення.кількість, Замовлення.час_замовлення
FROM Замовлення
INNER JOIN Піца ON Замовлення.id_замовленої_піци = Піца.id;
--Отримати всі замовлення на піцу "ГАВАЙСЬКА" (або будь-яку іншу піцу за назвою):
SELECT Замовлення.id, Піца.назва, Замовлення.кількість, Замовлення.час_замовлення
FROM Замовлення
INNER JOIN Піца ON Замовлення.id_замовленої_піци = Піца.id
WHERE Піца.назва = 'Гавайська';
--Дізнатися, скільки всього грошей ви заробили на піці "ГАВАЙСЬКА":
SELECT SUM(Піца.ціна * Замовлення.кількість) AS "Загальний дохід"
FROM Замовлення
INNER JOIN Піца ON Замовлення.id_замовленої_піци = Піца.id
WHERE Піца.назва = 'Гавайська';
--Отримати статистику (кількість замовлень) для кожної піци:
SELECT Піца.назва, COUNT(Замовлення.id) AS "кількість Замовлень"
FROM Піца
LEFT JOIN Замовлення ON Піца.id = Замовлення.id_замовленої_піци
GROUP BY Піца.назва;