【问题标题】:Is there a way to calculate the max of a sum in SQL?有没有办法在 SQL 中计算总和的最大值?
【发布时间】:2021-12-07 23:53:48
【问题描述】:

我有三个栏目,发送组织、接收组织和参与者数量。对于每个发送组织,如何显示参与者人数最多的接收组织? 有些行的发送和接收值相同,所以我必须对这些行的参与者求和。

Es:

SENDING RECEIVING PARTECIPANTS
A B 10
A C 9
A B 2
B C 11
B D 4
B D 5
C E 1
Expected output :
A B
B C
C E

【问题讨论】:

    标签: sql hive


    【解决方案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
      

      【讨论】:

        猜你喜欢
        • 2016-09-06
        • 1970-01-01
        • 1970-01-01
        • 2022-01-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多