CREATE OR REPLACE FUNCTION get_clients_by_number_of_orders() RETURNS TABLE ( client_id INT, client_name TEXT, number_of_orders BIGINT ) LANGUAGE plpgsql AS $$ BEGIN RETURN QUERY SELECT c.client_id, c.name AS client_name, COUNT(DISTINCT o.order_num) AS number_of_orders FROM client c JOIN makes_order mo ON c.client_id = mo.client_id JOIN "order" o ON mo.order_num = o.order_num GROUP BY c.client_id, c.name ORDER BY number_of_orders DESC; END; $$;