• Предмет: Информатика
  • Автор: Kukuwka0Ha0DepeBe
  • Вопрос задан 1 год назад

SQL
Вы открыли пиццерию.
Создать таблицу с разными пиццами (id, название, описание, цена).
Создать таблицу с заказами (id, id_заказанной_пиццы, количество, время заказа (под время есть отдельный тип данных).

Заполнить обе таблицы большим количеством данных (5+ пицц, 15+ заказов).


Выполнить следующие запросы:

1. Получить все заказы с подробной информацией о заказанной пицце (select заказ join пицца).

2. Получить все заказы на пиццу ГАВАЙСКАЯ (или другая).

3. Узнать, сколько всего денег вы заработали на пицце ГАВАЙСКАЯ.

4. Получить статистику (ПИЦЦА - КОЛ-ВО ЗАКАЗОВ) (группировка)

Ответы

Ответ дал: archery
0

Тип БД був не вказаний, тому робила для 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 Піца.назва;

   

Вас заинтересует