-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathViews.sql
More file actions
168 lines (144 loc) · 2.72 KB
/
Copy pathViews.sql
File metadata and controls
168 lines (144 loc) · 2.72 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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
CREATE OR REPLACE VIEW ACTIVE_DELIVERIES AS
SELECT
D.DELIVERY_ID,
D.AGENT_ID,
DA.AGENT_NAME,
D.ORDER_NO,
O.AMOUNT,
D.STATUS,
D.DEPARTURE_DATE,
D.ESTIMATED_TIME_MINUTES
FROM
DELIVERY D
JOIN
DELIVERY_AGENT DA ON D.AGENT_ID = DA.AGENT_ID
JOIN
ORDERS O ON D.ORDER_NO = O.ORDER_ID
WHERE
D.STATUS = 'In Progress';
CREATE OR REPLACE VIEW AS
SELECT
C.CUSTOMER_ID,
C.CUSTOMER_NAME,
C.ADDRESS,
O.ORDER_ID,
O.ORDER_STATUS,
O.AMOUNT
FROM
CUSTOMER C
JOIN
ORDERS O ON C.CUSTOMER_ID = O.CUSTOMER_ID;
CREATE OR REPLACE VIEW AS
SELECT
R.RESTAURANT_ID,
R.R_NAME,
SUM(RE.TOTALSALE) AS TOTAL_REVENUE
FROM
RESTAURANTS R
JOIN
REVENUE RE ON R.RESTAURANT_ID = RE.R_ID
GROUP BY
R.RESTAURANT_ID, R.R_NAME;
CREATE OR REPLACE VIEW AS
SELECT
O.ORDER_ID,
O.CUSTOMER_ID,
I.ITEM_NO,
I.ITEM_NAME,
OI.QUANTITY,
OI.PRICE
FROM
ORDERS O
JOIN
ORDERITEMS OI ON O.ORDER_ID = OI.O_NO
JOIN
ITEMS I ON OI.ITEM_NO = I.ITEM_NO;
CREATE OR REPLACE VIEW AS
SELECT
I.ITEM_NO,
I.ITEM_NAME,
R.RESTAURANT_ID,
R.R_NAME AS RESTAURANT_NAME,
RI.PRICE,
RI.AVAILIBILITY_STATUS,
RI.LASTUPDATED
FROM
ITEMS I
JOIN
RESTAURANT_ITEMS RI ON I.ITEM_NO = RI.ITEM_NUMBER
JOIN
RESTAURANTS R ON RI.RESTAURANT_ID = R.RESTAURANT_ID
CREATE OR REPLACE VIEW TOP_RATED_RESTAURANTS AS
SELECT
R.RESTAURANT_ID,
R.R_NAME AS RESTAURANT_NAME,
AVG(RE.RATING) AS AVERAGE_RATING
FROM
RESTAURANTS R
JOIN
ORDERS O ON R.RESTAURANT_ID = O.CUSTOMER_ID
JOIN
REVIEW RE ON O.ORDER_ID = RE.ORDER_ID
GROUP BY
R.RESTAURANT_ID, R.R_NAME
HAVING
AVG(RE.RATING) >= 4
CREATE OR REPLACE VIEW DISCOUNTED_ORDERS AS
SELECT
O.ORDER_ID,
C.CUSTOMER_NAME,
R.DISCOUNTCODE,
R.PAYABLE_AMOUNT,
R.TAX
FROM
ORDERS O
JOIN
CUSTOMER C ON O.CUSTOMER_ID = C.CUSTOMER_ID
JOIN
REGULATIONS R ON O.ORDER_ID = R.O_NO
WHERE
R.DISCOUNTCODE IS NOT NULL;
CREATE OR REPLACE VIEW AS
SELECT
R.RESTAURANT_ID,
R.R_NAME AS RESTAURANT_NAME,
COUNT(O.ORDER_ID) AS TOTAL_ORDERS
FROM
RESTAURANTS R
JOIN
ITEMS I ON R.RESTAURANT_ID = I.RESTAURANT_ID
JOIN
ORDERITEMS OI ON I.ITEM_NO = OI.ITEM_NO
JOIN
ORDERS O ON OI.O_NO = O.ORDER_ID
GROUP BY
R.RESTAURANT_ID, R.R_NAME;
CREATE OR REPLACE VIEW ACTIVE_PROMOTIONS AS
SELECT
P.promo_id,
R.R_NAME AS RESTAURANT_NAME,
PD.promo_name,
P.promo_code,
PD.activationDate,
PD.lastDate
FROM
PROMOTIONS P
JOIN
RESTAURANTS R ON P.r_id = R.RESTAURANT_ID
JOIN
PROMOTIONS_DETAILS PD ON P.promo_code = PD.promo_code
WHERE
PD.lastDate >= SYSDATE;
CREATE OR REPLACE VIEW AGENT_PERFORMANCE AS
SELECT
DA.AGENT_ID,
DA.AGENT_NAME,
COUNT(D.DELIVERY_ID) AS TOTAL_DELIVERIES
FROM
DELIVERY_AGENT DA
LEFT JOIN
DELIVERY D ON DA.AGENT_ID = D.AGENT_ID
WHERE
D.STATUS = 'Delivered'
GROUP BY
DA.AGENT_ID, DA.AGENT_NAME