![](/img/trans.png)
[英]MySQL: Select rows with max column value and corresponded datetime grouped by another column
[英]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
我已经用SUM
, MAX
, GROUP 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_id
, user_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.