CREATE OR REPLACE FUNCTION get_top_10_employees_by_requests_last_month() RETURNS TABLE ( id BIGINT, employee_name TEXT, number_of_requests BIGINT ) LANGUAGE plpgsql AS $$ BEGIN RETURN QUERY SELECT e.id, p.name AS employee_name, COUNT(DISTINCT a.request_num) AS number_of_requests FROM employees e JOIN personal p ON e.id = p.id JOIN answers a ON e.id = a.id JOIN request r ON a.request_num = r.request_num WHERE r.date_and_time >= date_trunc('month', CURRENT_DATE) - INTERVAL '1 month' AND r.date_and_time < date_trunc('month', CURRENT_DATE) GROUP BY e.id, p.name ORDER BY number_of_requests DESC LIMIT 10; END; $$;