-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDBFunctions.sql
More file actions
45 lines (36 loc) · 1.12 KB
/
Copy pathDBFunctions.sql
File metadata and controls
45 lines (36 loc) · 1.12 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
CREATE OR ALTER FUNCTION Food.GetRestaurantRating (@RestID INT)
RETURNS FLOAT
AS
BEGIN
DECLARE @AvgRating FLOAT;
SELECT @AvgRating = ROUND(AVG(CAST(Rating AS FLOAT)), 2)
FROM Food.Reviews
WHERE RestaurantID = @RestID;
RETURN ISNULL(@AvgRating, 0);
END;
CREATE OR ALTER FUNCTION Food.GetLatestStatus (@OrdID INT)
RETURNS VARCHAR(50)
AS
BEGIN
DECLARE @LastStatus NVARCHAR(50);
SELECT TOP 1 @LastStatus = Status
FROM Food.OrderStatusHistory
WHERE OrderID = @OrdID
ORDER BY ChangeDate DESC, HistoryID DESC;
RETURN ISNULL(@LastStatus, 'Unspecified');
END;
CREATE OR ALTER FUNCTION Food.GetFinalPrice (@OrdID INT)
RETURNS DECIMAL(18,2)
AS
BEGIN
DECLARE @Final DECIMAL(18,2);
SELECT @Final = O.TotalAmount - ISNULL((O.TotalAmount * C.DiscountPercent / 100), 0)
FROM Food.Orders O
LEFT JOIN Food.Coupons C ON O.CouponID = C.CouponID
WHERE O.OrderID = @OrdID;
RETURN @Final;
END;
/*Testing Functions*/
--SELECT Food.GetRestaurantRating(1) AS AverageRating;
--SELECT Food.GetLatestStatus(1) AS CurrentOrderStatus;
--SELECT Food.GetFinalPrice(1) AS FinalPriceToPay;