的百分比丢失列我有模式的MySQL表如下:单个查询,以填补在通过计算组总
行group id amount fraction
1 1 3
1 2 5
2 3 2
2 3 1
每个属于一个组。每行还存储一个称为amount
的特定值。我想找到占集团总amount
每一行都有的部分,因此该表将是这样的:
AFTER
group id amount fraction
1 1 3 .375
1 2 5 .625
2 3 2 66.67
2 3 1 33.33
要获得第1列的值,我在第1组总结了所有的amount
列。那将是3 + 5,即8。然后我将第1行中的amount
除以组合和,得出.375。我为他们做了这些。通过各组
SELECT SUM(amount) GROUP BY group
然后循环,选择排在该组中,计算分数,并更新行:
我可以像这样写查询做到这一点。不幸的是,这意味着在初始查询之后,我将处理2个嵌套for循环,以及数百万和数百万个查询,这将在数据集的大小的情况下花费很长时间。
我有一种微妙的感觉,有一种方法可以通过一个mysql查询更高效地执行此操作。如果任何人有任何想法如何使用单个查询来做到这一点,那是我的问题。
组是一个一个可怜的名字表/列标识符。我想知道你能弄清楚为什么? – Strawberry
是的......我只是用它来简化示例,我实际使用的名称是不同的。我想这确实会让答案更难以阅读! – user3413723