48 lines
1.4 KiB
SQL
48 lines
1.4 KiB
SQL
-- sales report - task 2
|
|
-- changes:
|
|
-- removed menu name, because I assumed that Little lemon wants orders à la carte instead of fixed menus
|
|
-- changed cost cutoff from 150.00 to 75.00, because I wanted more than one test result
|
|
with
|
|
GroupedOrderItems as (
|
|
select
|
|
OI.OrderID,
|
|
MI.Category,
|
|
concat(MI.Name, " (", count(OI.OrderItemID), "x)") as Item
|
|
from OrderItems as OI
|
|
inner join MenuItems as MI on OI.MenuItemID = MI.MenuItemID
|
|
group by OI.OrderID, MI.Category, OI.MenuItemID
|
|
),
|
|
|
|
MainOrderItems as (
|
|
select
|
|
OrderID,
|
|
group_concat(Item separator '\n') as Items
|
|
from GroupedOrderItems
|
|
where Category = "Main"
|
|
group by OrderID
|
|
),
|
|
|
|
StarterOrderItems as (
|
|
select
|
|
OrderID,
|
|
group_concat(Item separator '\n') as Items
|
|
from GroupedOrderItems
|
|
where Category = "Starter"
|
|
group by OrderID
|
|
)
|
|
|
|
select
|
|
C.CustomerID,
|
|
concat(C.FirstName, " ", C.LastName) as FullName,
|
|
O.OrderID,
|
|
O.BillAmount as Cost,
|
|
coalesce(MOI.Items, "") as Mains,
|
|
coalesce(SOI.Items, "") as Starters
|
|
from Orders as O
|
|
inner join Bookings as B on O.BookingID = B.BookingID
|
|
inner join Customers as C on B.CustomerID = C.CustomerID
|
|
left join MainOrderItems as MOI on O.OrderID = MOI.OrderID
|
|
left join StarterOrderItems as SOI on O.OrderID = SOI.OrderID
|
|
where O.BillAmount > 75.00
|
|
group by O.OrderID;
|