Оконные функции (ROW_NUMBER, RANK, SUM OVER (PARTITION BY ... ORDER BY ...)) вычисляют значение по "окну" строк без схлопывания в одну. Поддерживаются в Postgres, MySQL 8+, SQL Server. В Go пишут сырой SQL с оконными функциями, результат сканируют в структуры; иногда нужны отдельные поля для номера строки и агрегата по окну.
SELECT id, name, ROW_NUMBER() OVER (PARTITION BY dept_id ORDER BY salary DESC) AS rn FROM employees