Zomato Interview Questions 2+ yrs exp ( 19LPA )

CREATE TABLE zomato_restaurant_orders (
                         order_id       NUMBER
                       , restaurant_id  VARCHAR2(10)
                       , order_date     DATE
                       , order_value    NUMBER ); 
 
BEGIN
 INSERT INTO zomato_restaurant_orders VALUES (1, 'R1', DATE '2024-07-01', 1000);
 INSERT INTO zomato_restaurant_orders VALUES (2, 'R1', DATE '2024-07-01', 100);
 INSERT INTO zomato_restaurant_orders VALUES (3, 'R1', DATE '2024-07-02', 950);
 INSERT INTO zomato_restaurant_orders VALUES (4, 'R1', DATE '2024-07-03', 600);
 INSERT INTO zomato_restaurant_orders VALUES (5, 'R1', DATE '2024-07-04', 300);
 INSERT INTO zomato_restaurant_orders VALUES (6, 'R1', DATE '2024-07-04', 250);
 INSERT INTO zomato_restaurant_orders VALUES (7, 'R1', DATE '2024-07-05', 500);
 INSERT INTO zomato_restaurant_orders VALUES (8, 'R2', DATE '2024-07-01', 1500);
 INSERT INTO zomato_restaurant_orders VALUES (9, 'R2', DATE '2024-07-02', 1400);
 INSERT INTO zomato_restaurant_orders VALUES (10, 'R2', DATE '2024-07-03', 800);
 INSERT INTO zomato_restaurant_orders VALUES (11, 'R2', DATE '2024-07-03', 1000);
 INSERT INTO zomato_restaurant_orders VALUES (12, 'R1', DATE '2024-07-06', 1000);
 INSERT INTO zomato_restaurant_orders VALUES (13, 'R1', DATE '2024-07-07', 100);
 INSERT INTO zomato_restaurant_orders VALUES (14, 'R1', DATE '2024-07-08', 950);
 INSERT INTO zomato_restaurant_orders VALUES (15, 'R1', DATE '2024-07-09', 600);
 INSERT INTO zomato_restaurant_orders VALUES (16, 'R1', DATE '2024-07-10', 300);
END;
/

How to achieve this?

1. First calculate the total daily revenue for each restaurant
2. Then calculate the 7-day moving average of these daily totals

SELECT restaurant_id
     , order_date
     , SUM(order_value) AS daily_revenue
     , ROUND( AVG(SUM(order_value) ) 
             OVER (PARTITION BY restaurant_id 
                   ORDER BY order_date 
                   ROWS BETWEEN 6 PRECEDING AND CURRENT ROW
            ), 2) AS moving_7day_avg
FROM zomato_restaurant_orders
GROUP BY restaurant_id, order_date
ORDER BY restaurant_id, order_date;

Add a Comment

Your email address will not be published. Required fields are marked *