SELECT order_date, region, revenue, SUM(revenue) OVER ( PARTITION BY region ORDER BY order_date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) AS running_total, revenue - LAG(revenue) OVER ( PARTITION BY region ORDER BY order_date ) AS vs_previous, DENSE_RANK() OVER ( PARTITION BY region ORDER BY revenue DESC ) AS rank_in_region FROM orders ORDER BY region, order_date;