first commit
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
#####################################################
|
||||
###################### Task 1: ##################
|
||||
1. Створіть SQL-функцію, яка виведе значення вартості (Cost) для угоди,
|
||||
номер якої вкаже користувач при виклику фукнції.
|
||||
2. Викличте функцію, використавши в якості вхідного параметра OrderID = 5.
|
||||
|
||||
USE Lucky_Shrub;
|
||||
|
||||
create function CalculateCost(order_id int)
|
||||
returns int DETERMINISTIC
|
||||
begin
|
||||
declare v_cost int;
|
||||
select Cost into v_cost from Orders where OrderID = order_id;
|
||||
return v_cost;
|
||||
end
|
||||
|
||||
set @OrderID = 8;
|
||||
|
||||
select CalculateCost (@OrderID);
|
||||
@@ -0,0 +1,42 @@
|
||||
#####################################################
|
||||
###################### Task 2: ##################
|
||||
|
||||
1. Створіть збережену процедуру, яка довзволить вивести вартість замовлення із врахуванням знижки.
|
||||
Як вхідний параметр процедура повинна використовувати значення ідентифікатора замовлення (OrderID).
|
||||
Умови знижки:
|
||||
• якщо кількість товару у замовлення >= 20, тоді знижка становить 20%;
|
||||
|
||||
• якщо кількість товару у замовленні < 20 і >= 10, тоді знижка становить 10%;
|
||||
|
||||
• в іншому випадку знижка не передбачена.
|
||||
2. Викличте створену процедуру зі значення ідентифікатора замовлення OrderID = 5.
|
||||
#####################################################
|
||||
|
||||
drop procedure if exists CalculateDiscountedCost;
|
||||
|
||||
create procedure CalculateDiscountedCost(in order_id int)
|
||||
begin
|
||||
declare v_cost decimal(10,2);
|
||||
declare v_discount decimal(5,2);
|
||||
declare v_final_cost decimal(10,2);
|
||||
declare v_quantity int;
|
||||
|
||||
select Cost, Quantity into v_cost, v_quantity
|
||||
from Orders
|
||||
where OrderID = order_id;
|
||||
|
||||
if v_quantity >= 20 then
|
||||
set v_discount = 0.20;
|
||||
elseif v_quantity >= 10 then
|
||||
set v_discount = 0.10;
|
||||
else
|
||||
set v_discount = 0.00;
|
||||
end if;
|
||||
|
||||
set v_final_cost = v_cost * (1 - v_discount);
|
||||
select v_final_cost as FinalCost, v_cost as Cost, v_discount as Discount, v_quantity as Quantity, v_cost - v_cost * (1 - v_discount) as DiscountAmount;
|
||||
end
|
||||
|
||||
set @OrderID = 8;
|
||||
|
||||
call CalculateDiscountedCost (@OrderID);
|
||||
@@ -0,0 +1,285 @@
|
||||
###################################################
|
||||
Передумови
|
||||
1. Створіть базу даних Lucky_Shrub (якщо не існує), та оберіть її.
|
||||
|
||||
CREATE DATABASE IF NOT EXISTS Lucky_Shrub;
|
||||
|
||||
USE Lucky_Shrub;
|
||||
|
||||
2.Створіть таблицю Orders (якщо не існує) та наповніть її відповідними даними (якщо потрібно).
|
||||
|
||||
CREATE TABLE Orders (
|
||||
OrderID INT NOT NULL PRIMARY KEY,
|
||||
ClientID VARCHAR(10),
|
||||
ProductID VARCHAR(10),
|
||||
Quantity INT,
|
||||
Cost DECIMAL(6, 2),
|
||||
Date DATE
|
||||
);
|
||||
|
||||
-- Якщо база даних існує, порівняйте схему із запропонованою.
|
||||
-- Для цього використаємо код наведений нижче:
|
||||
SHOW CREATE TABLE Orders;
|
||||
|
||||
-- У разі потреби внесіть у схему необхідні зміни
|
||||
|
||||
---------------------------------------------------
|
||||
|
||||
Якщо Ваша таблиця вже містить певні дані,
|
||||
щоб оновити їх й додати нові використайте запит
|
||||
|
||||
REPLACE INTO
|
||||
Orders (
|
||||
OrderID,
|
||||
ClientID,
|
||||
ProductID,
|
||||
Quantity,
|
||||
Cost,
|
||||
Date
|
||||
)
|
||||
VALUES (
|
||||
1,
|
||||
"Cl1",
|
||||
"P1",
|
||||
10,
|
||||
500,
|
||||
"2020-09-01"
|
||||
),
|
||||
(
|
||||
2,
|
||||
"Cl2",
|
||||
"P2",
|
||||
5,
|
||||
100,
|
||||
"2020-09-05"
|
||||
),
|
||||
(
|
||||
3,
|
||||
"Cl3",
|
||||
"P3",
|
||||
20,
|
||||
800,
|
||||
"2020-09-03"
|
||||
),
|
||||
(
|
||||
4,
|
||||
"Cl4",
|
||||
"P4",
|
||||
15,
|
||||
150,
|
||||
"2020-09-07"
|
||||
),
|
||||
(
|
||||
5,
|
||||
"Cl3",
|
||||
"P3",
|
||||
10,
|
||||
450,
|
||||
"2020-09-08"
|
||||
),
|
||||
(
|
||||
6,
|
||||
"Cl2",
|
||||
"P2",
|
||||
5,
|
||||
800,
|
||||
"2020-09-09"
|
||||
),
|
||||
(
|
||||
7,
|
||||
"Cl1",
|
||||
"P4",
|
||||
22,
|
||||
1200,
|
||||
"2020-09-10"
|
||||
),
|
||||
(
|
||||
8,
|
||||
"Cl3",
|
||||
"P1",
|
||||
15,
|
||||
150,
|
||||
"2020-09-10"
|
||||
),
|
||||
(
|
||||
9,
|
||||
"Cl1",
|
||||
"P1",
|
||||
10,
|
||||
500,
|
||||
"2020-09-12"
|
||||
),
|
||||
(
|
||||
10,
|
||||
"Cl2",
|
||||
"P2",
|
||||
5,
|
||||
100,
|
||||
"2020-09-13"
|
||||
),
|
||||
(
|
||||
11,
|
||||
"Cl4",
|
||||
"P5",
|
||||
5,
|
||||
100,
|
||||
"2020-09-15"
|
||||
),
|
||||
(
|
||||
12,
|
||||
"Cl1",
|
||||
"P1",
|
||||
10,
|
||||
500,
|
||||
"2022-09-01"
|
||||
),
|
||||
(
|
||||
13,
|
||||
"Cl2",
|
||||
"P2",
|
||||
5,
|
||||
100,
|
||||
"2022-09-05"
|
||||
),
|
||||
(
|
||||
14,
|
||||
"Cl3",
|
||||
"P3",
|
||||
20,
|
||||
800,
|
||||
"2022-09-03"
|
||||
),
|
||||
(
|
||||
15,
|
||||
"Cl4",
|
||||
"P4",
|
||||
15,
|
||||
150,
|
||||
"2022-09-07"
|
||||
),
|
||||
(
|
||||
16,
|
||||
"Cl3",
|
||||
"P3",
|
||||
10,
|
||||
450,
|
||||
"2022-09-08"
|
||||
),
|
||||
(
|
||||
17,
|
||||
"Cl2",
|
||||
"P2",
|
||||
5,
|
||||
800,
|
||||
"2022-09-09"
|
||||
),
|
||||
(
|
||||
18,
|
||||
"Cl1",
|
||||
"P4",
|
||||
22,
|
||||
1200,
|
||||
"2022-09-10"
|
||||
),
|
||||
(
|
||||
19,
|
||||
"Cl3",
|
||||
"P1",
|
||||
15,
|
||||
150,
|
||||
"2022-09-10"
|
||||
),
|
||||
(
|
||||
20,
|
||||
"Cl1",
|
||||
"P1",
|
||||
10,
|
||||
500,
|
||||
"2022-09-12"
|
||||
),
|
||||
(
|
||||
21,
|
||||
"Cl2",
|
||||
"P2",
|
||||
5,
|
||||
100,
|
||||
"2022-09-13"
|
||||
),
|
||||
(
|
||||
22,
|
||||
"Cl2",
|
||||
"P1",
|
||||
10,
|
||||
500,
|
||||
"2021-09-01"
|
||||
),
|
||||
(
|
||||
23,
|
||||
"Cl2",
|
||||
"P2",
|
||||
5,
|
||||
100,
|
||||
"2021-09-05"
|
||||
),
|
||||
(
|
||||
24,
|
||||
"Cl3",
|
||||
"P3",
|
||||
20,
|
||||
800,
|
||||
"2021-09-03"
|
||||
),
|
||||
(
|
||||
25,
|
||||
"Cl4",
|
||||
"P4",
|
||||
15,
|
||||
150,
|
||||
"2021-09-07"
|
||||
),
|
||||
(
|
||||
26,
|
||||
"Cl1",
|
||||
"P3",
|
||||
10,
|
||||
450,
|
||||
"2021-09-08"
|
||||
),
|
||||
(
|
||||
27,
|
||||
"Cl2",
|
||||
"P1",
|
||||
20,
|
||||
1000,
|
||||
"2022-09-01"
|
||||
),
|
||||
(
|
||||
28,
|
||||
"Cl2",
|
||||
"P2",
|
||||
10,
|
||||
200,
|
||||
"2022-09-05"
|
||||
),
|
||||
(
|
||||
29,
|
||||
"Cl3",
|
||||
"P3",
|
||||
20,
|
||||
800,
|
||||
"2021-09-03"
|
||||
),
|
||||
(
|
||||
30,
|
||||
"Cl1",
|
||||
"P1",
|
||||
10,
|
||||
500,
|
||||
"2022-09-01"
|
||||
);
|
||||
|
||||
#####################################################
|
||||
Основні завдання:
|
||||
• Розробити визначену користувачем фукнцію
|
||||
• Розробити збережену процедуру
|
||||
#####################################################
|
||||
Reference in New Issue
Block a user