"max_by/min_by Узнала про прикольные функции, они заменяют оконку/CTE на одно поле Пример - вывести имя сотрудника с максимальным стажем по каждому департаменту ``` result = df.groupBy(""department"").agg( F.max_by(""name"", ""years"") ) ``` И все! Не надо никаких row_number = 1 В Spark SQL можно еще и фильтр набросить: ``` spark.sql("""""" select department, max_by(name, years) filter (where name is not null) from employees group by department """""") ``` А в Trino еще можно собрать массив топ-n в убывающем порядке: ``` select department, max_by(name, years) AS top_employee, max_by(name, years, 2) AS top_2_employees from employees group by department ``` Аналог в ClickHouse - argMax @data_engineerette"