繁体   English   中英

选择具有另一列分组的值的MAX SUM的多行

[英]Select multiple rows with the MAX SUM of a value grouped by another column

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

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 region_id,user_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;

您可以运行第一个查询来确定每对夫妇( territory_iduser_id )的SUM(weight) ,然后对该结果集运行第二个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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM