Files
db-engineer-capstone-project/sql/get_expensive_orders.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;