【发布时间】: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
我已经用SUM、MAX、GROUP 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