first commit
This commit is contained in:
@@ -0,0 +1,192 @@
|
||||
# MySQL Functions І
|
||||
Для роботи потрібна буде база даних jewelrystore_db а також її дві таблиці: item та mg_orders.
|
||||
Таблиця item містить інформацію про товар та його вартість, таблиця mg_orders містить список замовлень та їх деталі
|
||||
|
||||
Передумови
|
||||
############################################################
|
||||
############################################################
|
||||
|
||||
В MySQL має бути створена база даних магазину коштовностей фірми M&G, яка включає таблиці item та mg_orders які слід заповнити відповідними даними.
|
||||
Для створення бази, таблиць та наповнення їх необхідною інформацією скористайтеся наданми нижче кодом:
|
||||
------------------------------------------------------------
|
||||
1: Створіть базу даних якщо не існує
|
||||
|
||||
CREATE DATABASE IF NOT EXISTS jewelrystore_db;
|
||||
|
||||
------------------------------------------------------------
|
||||
2: Оберіть базу даних
|
||||
|
||||
USE jewelrystore_db;
|
||||
|
||||
------------------------------------------------------------
|
||||
3: Створіть, якщо не існує, таблицю item.
|
||||
|
||||
CREATE TABLE IF NOT EXISTS item (
|
||||
ItemID INT,
|
||||
Name VARCHAR(150),
|
||||
Cost INT,
|
||||
PRIMARY KEY (ItemID)
|
||||
);
|
||||
|
||||
SHOW CREATE TABLE item;
|
||||
|
||||
SELECT * FROM item;
|
||||
------------------------------------------------------------
|
||||
4: Внесіть дані у таблицю, або перевірте їх відповідність, якщо вони вже внесені
|
||||
|
||||
INSERT INTO
|
||||
item
|
||||
VALUES (1, 'Engagement ring', 2500),
|
||||
(2, 'Silver brooch', 400),
|
||||
(3, 'Earrings', 350),
|
||||
(4, 'Luxury watch', 1250),
|
||||
(5, 'Golden bracelet', 800),
|
||||
(6, 'Gemstone', 1500);
|
||||
|
||||
SELECT * FROM item;
|
||||
|
||||
------------------------------------------------------------
|
||||
5: Створіть, якщо не існує, таблицю mg_orders
|
||||
|
||||
CREATE TABLE IF NOT EXISTS mg_orders (
|
||||
OrderID INT,
|
||||
ItemID INT,
|
||||
Quantity INT,
|
||||
Cost INT,
|
||||
OrderDate DATE,
|
||||
DeliveryDate DATE,
|
||||
OrderStatus VARCHAR(50),
|
||||
PRIMARY KEY (OrderID)
|
||||
);
|
||||
|
||||
------------------------------------------------------------
|
||||
6: Внесіть дані у таблицю, або перевірте їх відповідність, якщо вони вже внесені
|
||||
|
||||
INSERT INTO
|
||||
mg_orders
|
||||
VALUES (
|
||||
1,
|
||||
1,
|
||||
50,
|
||||
122000,
|
||||
'2022-04-05',
|
||||
'2022-05-25',
|
||||
'Delivered'
|
||||
),
|
||||
(
|
||||
2,
|
||||
2,
|
||||
75,
|
||||
28000,
|
||||
'2022-03-08',
|
||||
NULL,
|
||||
'In progress'
|
||||
),
|
||||
(
|
||||
3,
|
||||
3,
|
||||
80,
|
||||
25000,
|
||||
'2022-05-19',
|
||||
'2022-06-08',
|
||||
'Delivered'
|
||||
),
|
||||
(
|
||||
4,
|
||||
4,
|
||||
45,
|
||||
100000,
|
||||
'2022-01-10',
|
||||
NULL,
|
||||
'In progress'
|
||||
),
|
||||
(
|
||||
5,
|
||||
5,
|
||||
70,
|
||||
56000,
|
||||
'2022-05-19',
|
||||
NULL,
|
||||
'In progress'
|
||||
),
|
||||
(
|
||||
6,
|
||||
6,
|
||||
60,
|
||||
90000,
|
||||
'2022-06-10',
|
||||
'2022-06-18',
|
||||
'Delivered'
|
||||
);
|
||||
|
||||
SELECT *, Date_format(OrderDate, '%Y-%m-%d') AS OrderDate, Date_format(DeliveryDate, '%Y-%m-%d') AS DeliveryDate
|
||||
FROM mg_orders;
|
||||
##########################################################
|
||||
|
||||
Основна мета:
|
||||
• Робота із стрічковими, математичним, та функціями типу дата/час в MySQL.
|
||||
##########################################################
|
||||
######################### Завдання #####################
|
||||
######################## Завдання 1 ####################
|
||||
1. Напишіть запит, використовуючи стрічкові функцію для відображення списку товарів,
|
||||
їх кількості та статусу замовлення у такому форматі:
|
||||
Item name–quantity–order status
|
||||
|
||||
SELECT CONCAT(
|
||||
Name, '-', Quantity, '-', OrderStatus
|
||||
) AS ItemNameQuantityOrderStatus
|
||||
FROM mg_orders
|
||||
JOIN item ON mg_orders.ItemID = item.ItemID;
|
||||
|
||||
|
||||
2. Ім’я товару повинно бути відображено символами верхнього регістру,
|
||||
а статус замовлення - символами нижнього регістру.
|
||||
Очікуваний вигляд вибірки: https://drive.google.com/open?id=15v1G3pzopt_bKV1X_DDyBVZQti13fHy-&authuser=yuriy.kotsyuk%40oa.edu.ua&usp=drive_fs
|
||||
|
||||
items
|
||||
item - quantity - order status (Uppercase)
|
||||
|
||||
SELECT CONCAT(
|
||||
LOWER(Name), '-', Quantity, '-', UPPER(OrderStatus)
|
||||
) AS ItemNameQuantityOrderStatus
|
||||
FROM mg_orders
|
||||
JOIN item ON mg_orders.ItemID = item.ItemID;
|
||||
|
||||
##########################################################
|
||||
###################### Завдання 2: ###################
|
||||
Напишіть запит із використанням функцій дата/час, для відображення імені та дня тижня
|
||||
у який замовлення має бути доставлено.
|
||||
Очікуваний вигляд вибірки: https://drive.google.com/open?id=15u1sWEgU0ianaMqfPVgbjdE04r8hbPq1&authuser=yuriy.kotsyuk%40oa.edu.ua&usp=drive_fs
|
||||
|
||||
Name, Day_of_week
|
||||
(Capitalized), (Name of day, nullable)
|
||||
|
||||
SELECT Name, DAYNAME(DeliveryDate) AS Day_of_week
|
||||
FROM mg_orders
|
||||
JOIN item ON mg_orders.ItemID = item.ItemID;
|
||||
|
||||
############################################################
|
||||
####################### Завдання 3: ####################
|
||||
Напишіть запити, який підрахує вартість обробки кожного замовлення, яка складає 5% від
|
||||
загальної вартості замовлення.
|
||||
Використайте відповідну математичну фукнцію, яка дозволить заокрулити суму до двох знаків після коми.
|
||||
Очікуваний вигляд вибірки: https://drive.google.com/open?id=15vCd0vIvLaqpbh9l5jr_h_W_rZe9tXW5&authuser=yuriy.kotsyuk%40oa.edu.ua&usp=drive_fs
|
||||
|
||||
OrderID, cost_of_handling
|
||||
|
||||
SELECT OrderID, ROUND(Cost * 0.05, 2) AS cost_of_handling
|
||||
from mg_orders;
|
||||
|
||||
############################################################
|
||||
####################### Завдання 4: ####################
|
||||
Модифікуйте запит із завдання 2 щоб відфільтрувати записи, які не містять порожніх даних у стовпці
|
||||
дати доставки. Використайте для цього відповідну функцію порівняння.
|
||||
Очікуваний вигляд вибірки: https://drive.google.com/open?id=15wLyFBx9i5BM_qVgTxjaILojwnZWQPZx&authuser=yuriy.kotsyuk%40oa.edu.ua&usp=drive_fs
|
||||
|
||||
SELECT Name, DAYNAME(DeliveryDate) AS Day_of_week
|
||||
FROM mg_orders
|
||||
JOIN item ON mg_orders.ItemID = item.ItemID
|
||||
WHERE
|
||||
NOT ISNULL(DeliveryDate);
|
||||
|
||||
############################################################
|
||||
Reference in New Issue
Block a user