Add query optimization scripts and results
This commit is contained in:
9
sql/cancel_order.sql
Normal file
9
sql/cancel_order.sql
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
-- query optimization - task 3
|
||||||
|
-- noqa: disable=CP03
|
||||||
|
create procedure CancelOrder (in TargetOrderID int)
|
||||||
|
begin
|
||||||
|
delete from Orders
|
||||||
|
where OrderID = TargetOrderID;
|
||||||
|
|
||||||
|
select concat("Order ", TargetOrderID, if(row_count() = 1, " is cancelled", " doesn't exist")) as Confirmation;
|
||||||
|
end
|
||||||
12
sql/get_max_quantity.sql
Normal file
12
sql/get_max_quantity.sql
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
-- query optimization - task 1
|
||||||
|
-- changes:
|
||||||
|
-- interpreted quantity as the number of items in an order, because I assumed that Little lemon wants
|
||||||
|
-- orders à la carte instead of fixed menus
|
||||||
|
|
||||||
|
create procedure GetMaxQuantity () -- noqa: disable=CP03
|
||||||
|
select count(OI.OrderItemID) as MaxQuantityInOrder
|
||||||
|
from MenuItems as MI
|
||||||
|
inner join OrderItems as OI on MI.MenuItemID = OI.MenuItemID
|
||||||
|
group by OI.OrderID
|
||||||
|
order by MaxQuantityInOrder desc
|
||||||
|
limit 1
|
||||||
15
sql/get_order_detail.sql
Normal file
15
sql/get_order_detail.sql
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
-- query optimization - task 2
|
||||||
|
-- changes:
|
||||||
|
-- interpreted quantity as the number of items in an order, because I assumed that Little lemon wants
|
||||||
|
-- orders à la carte instead of fixed menus
|
||||||
|
|
||||||
|
prepare GetOrderDetail from "
|
||||||
|
select
|
||||||
|
O.OrderID,
|
||||||
|
count(OI.MenuItemID) as Quantity,
|
||||||
|
O.BillAmount as Cost
|
||||||
|
from Orders as O
|
||||||
|
inner join OrderItems as OI on O.OrderID = OI.OrderID
|
||||||
|
inner join Bookings as B on O.BookingID = B.BookingID
|
||||||
|
where B.CustomerID = ?;
|
||||||
|
";
|
||||||
47
sql/query_optimization_results.txt
Normal file
47
sql/query_optimization_results.txt
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
# Task 1
|
||||||
|
> delimiter $
|
||||||
|
> source ./get_max_quantity.sql
|
||||||
|
> delimiter ;
|
||||||
|
> call GetMaxQuantity();
|
||||||
|
+--------------------+
|
||||||
|
| MaxQuantityInOrder |
|
||||||
|
+--------------------+
|
||||||
|
| 15 |
|
||||||
|
+--------------------+
|
||||||
|
|
||||||
|
# Task 2
|
||||||
|
> source ./get_order_detail.sql
|
||||||
|
> set @customerID = 1
|
||||||
|
> execute GetOrderDetail using @customerID
|
||||||
|
+---------+----------+-------+
|
||||||
|
| OrderID | Quantity | Cost |
|
||||||
|
+---------+----------+-------+
|
||||||
|
| 4 | 3 | 29.00 |
|
||||||
|
+---------+----------+-------+
|
||||||
|
|
||||||
|
# Task 3
|
||||||
|
> delimiter $
|
||||||
|
> source ./cancel_order.sql
|
||||||
|
> delimiter ;
|
||||||
|
> call CancelOrder(2)
|
||||||
|
+----------------------+
|
||||||
|
| Confirmation |
|
||||||
|
+----------------------+
|
||||||
|
| Order 2 is cancelled |
|
||||||
|
+----------------------+
|
||||||
|
> select * from `Orders`
|
||||||
|
+---------+---------------------+---------------------+------------+-----------+
|
||||||
|
| OrderID | Started | Finished | BillAmount | BookingID |
|
||||||
|
+---------+---------------------+---------------------+------------+-----------+
|
||||||
|
| 1 | 2024-11-14 18:05:00 | 2023-10-01 19:25:00 | 82.50 | 1 |
|
||||||
|
| 3 | 2024-11-14 19:10:00 | 2023-10-03 20:30:00 | 31.00 | 3 |
|
||||||
|
| 4 | 2024-11-14 19:35:00 | 2023-10-04 20:50:00 | 29.00 | 4 |
|
||||||
|
| 5 | 2024-11-14 19:40:00 | 2023-10-05 20:55:00 | 20.00 | 5 |
|
||||||
|
| 6 | 2024-11-14 19:40:00 | 2023-10-06 20:45:00 | 150.50 | 6 |
|
||||||
|
+---------+---------------------+---------------------+------------+-----------+
|
||||||
|
> call CancelOrder(2)
|
||||||
|
+-----------------------+
|
||||||
|
| Confirmation |
|
||||||
|
+-----------------------+
|
||||||
|
| Order 2 doesn't exist |
|
||||||
|
+-----------------------+
|
||||||
Reference in New Issue
Block a user