我的SQL表看起来像这样,它有大约500条记录,而volume_percentage当前是空的:
id | volume | volume_percentage
--------------------------------
1 | 3151 | 0.00
2 | 832 | 0.00
3 | 39011 | 0.00
[..]
499 | 2311 | 0.00
500 | 1201 | 0.00
我想填充每条记录的volume_percentage字段。数量百分比应反映此记录与总数的百分比。
基本上是这样的:
volume_percentage = volume / SUM(volume) * 100;
使用PHP和500个查询的while循环使这很容易实现,但这对我来说听起来并不是最佳的(这是一个需要定期完成的过程,因为卷经常会发生变化)。有没有办法在纯SQL中执行此操作?
答案 0 :(得分:1)
您可以使用join
和聚合:
update mytable t cross join
(select sum(volume) as sumvolume
from mytable
) s
set volume_percentage = 100 * volume / s.sumvolume;