Posted by gurpreet, Nov. 30, 2021, 3:19 p.m.
SQL#139
As per the given table 'food_delivery', I have written the following query, but the results are different.
With first_deliveries as (
SELECT first_value(order_id) over (partition by courier_id order by delivered_at) as first_delivery
FROM food_delivery
)
SELECT extract(year from a.delivered_at) as year,
extract(month from a.delivered_at) as mon,
sum(case when a.rating = 1 then 1 else 0 end )*100.0/count(*) as percent
FROM food_delivery a, first_deliveries b
WHERE a.order_id = b.first_delivery
GROUP BY year, mon
With first_deliveries as (
SELECT first_value(order_id) over (partition by courier_id order by delivered_at) as first_delivery
FROM food_delivery
)
SELECT extract(year from a.delivered_at) as year,
extract(month from a.delivered_at) as mon,
sum(case when a.rating = 1 then 1 else 0 end )*100.0/count(*) as percent
FROM food_delivery a, first_deliveries b
WHERE a.order_id = b.first_delivery
GROUP BY year, mon