【问题标题】:Select multiple rows with the MAX SUM of a value grouped by another column选择具有由另一列分组的值的 MAX SUM 的多行
【发布时间】:2016-03-28 10:05:45
【问题描述】:

我有一个“资源”表,其中包含有关用户如何将特定权重的资源放置在区域内的信息。

territory_id        user_id     weight 
1                       1           1
1                       1           4
1                       1           2
1                       2           2
2                       3           2
2                       2           3 
2                       2           3
3                       1           1
4                       1           1
4                       1           1
4                       2           2
4                       3           3
4                       3           1
4                       3           2
5                       3           2
5                       3           3
5                       2           1
4                       3           1

我想针对每个现有区域计算哪个用户的资源总权重最高(以及这个值是多少)。 所以这应该是之前数据的预期结果:

territory_id        best_user_id        best_user_total_weight_of_resources 
1                       1                       7 
2                       2                       6
3                       1                       1
4                       3                       6
5                       3                       5

我已经用SUMMAXGROUP BY 尝试了几个嵌套查询,但我真的没有找到正确的计算方法。 我发现了很多类似的问题,但没有解决这个确切的问题。 有什么帮助吗?提前致谢!

编辑:

我现在发现带有双重 ORDER BY 的双重 GROUP BY(即“GROUP BY 区域 ID,用户 ID”)部分解决了我的问题,但它也显示了我不想要的信息(不仅是最好的用户,但每个用户至少放置一个资源)。

SELECT territory_id, user_id AS best_user_id, SUM( weight ) AS best_user_total_weight
FROM resources
GROUP BY territory_id, user_id
ORDER BY territory_id ASC, best_user_total_weight DESC;

【问题讨论】:

    标签: mysql sum max nested-queries


    【解决方案1】:

    您可以运行第一个查询来确定每对夫妇的SUM(weight) (territory_id,user_id),然后对该结果集运行第二个SELECT 查询以检索与最大总和值对应的行:

    SELECT territory_id, user_id, MAX(summ) 
    FROM (
      SELECT territory_id, user_id, SUM(weight) AS summ 
      FROM resources
      GROUP BY territory_id, user_id
    ) AS t1 
    GROUP BY territory_id
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-06
      • 1970-01-01
      • 1970-01-01
      • 2015-03-03
      • 2020-11-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多