# 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);

############################################################