CREATE OR REPLACE FUNCTION get_store_with_highest_revenue_growth() RETURNS TABLE ( store_id INT, store_name TEXT, previous_year_revenue NUMERIC, last_year_revenue NUMERIC, revenue_growth NUMERIC ) LANGUAGE plpgsql AS $$ BEGIN RETURN QUERY WITH yearly_revenue AS ( SELECT s.store_id, s.name AS store_name, EXTRACT(YEAR FROM o.last_modified_date)::INT AS year, SUM( p.price * o.quantity * (1 - COALESCE(o.discount, 0) / 100.0) ) AS total_revenue FROM store s JOIN sells se ON s.store_id = se.store_id JOIN product p ON se.code = p.code JOIN includes i ON p.code = i.code JOIN "order" o ON i.order_num = o.order_num WHERE o.last_modified_date >= date_trunc('year', CURRENT_DATE) - INTERVAL '2 years' AND o.last_modified_date < date_trunc('year', CURRENT_DATE) GROUP BY s.store_id, s.name, EXTRACT(YEAR FROM o.last_modified_date) ), revenue_comparison AS ( SELECT store_id, store_name, MAX( CASE WHEN year = EXTRACT(YEAR FROM CURRENT_DATE)::INT - 2 THEN total_revenue ELSE 0 END ) AS previous_year_revenue, MAX( CASE WHEN year = EXTRACT(YEAR FROM CURRENT_DATE)::INT - 1 THEN total_revenue ELSE 0 END ) AS last_year_revenue FROM yearly_revenue GROUP BY store_id, store_name ) SELECT store_id, store_name, previous_year_revenue, last_year_revenue, last_year_revenue - previous_year_revenue AS revenue_growth FROM revenue_comparison ORDER BY revenue_growth DESC LIMIT 1; END; $$;