select category, orders_cnt, buyers_cnt, items_qty, revenue, ifnull(round(revenue/orders_cnt,2),0) avg_order_value, rank() over(order by revenue desc,orders_cnt desc,category) rank_by_revenue from( select category, count(distinct o.order_id) orders_cnt, count(distinct o.buyer_id) buyers_cnt, sum(i.qty) items_qty, sum(p.price*i.qty) revenue from product p left join order_items i using(product_id) left join orders o using(order_id) where left(order_date,7)='2024-08' group by category) tmp order by revenue desc,orders_cnt desc,category