Есть ли способ рассчитать максимальную сумму в SQL?

#sql #hive

#sql #улей

Вопрос:

У меня есть три колонки: отправляющая организация, принимающая организация и количество участников. Как я могу показать для каждой отправляющей организации принимающую организацию с наибольшим количеством участников? Некоторые строки имеют одинаковые значения для отправки и получения, поэтому я должен суммировать составные части для этих строк.

Es:

отправка получение УЧАСТНИКИ
A B 10
A C 9
A B 2
B C 11
B D 4
B D 5
C E 1
Ожидаемый результат :
A B
B C
C E

Ответ №1:

Я думаю, что лучшим способом будет использовать функцию окна:

SELECT sending, FIRST_VALUE(receiving) OVER ( PARTITION BY sending ORDER BY partecipants DESC ) receiving FROM ttable GROUP BY sending

На самом деле я не понял часть вашего вопроса, касающуюся некоторых сумм ценностей. Если вам придется их выполнить, вы можете ttable заменить подзапросом (SELECT SUM(...) ....)

Ответ №2:

Отказ от ответственности: этот запрос был протестирован в MySQL, а не в Hive.

Вы можете сделать:

 select * from (  select sending, receiving,   rank() over(order by sum(partecipants) desc) as rk  from t  group by sending, receiving ) x where rk = 1