MySQL:更新查询中基于SUM的计算

标签 mysql sql

我的 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 字段。成交量百分比应反射(reflect)该记录的成交量占总成交量的百分比。

所以基本上:

volume_percentage = volume / SUM(volume) * 100;

使用 PHP 和 500 个查询的 while 循环可以轻松实现这一点,但这对我来说听起来并不是最佳选择(这是一个需要定期完成的过程,因为数量经常变化)。有没有办法用纯 SQL 来做到这一点?

最佳答案

您可以通过加入和聚合来做到这一点:

update mytable t cross join
       (select sum(volume) as sumvolume
        from mytable
       ) s
    set volume_percentage = 100 * volume / s.sumvolume;

关于MySQL:更新查询中基于SUM的计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25924914/

相关文章:

mysql - 是否可以将 Amazon QuickSight 控制面板图表集成到 Web 应用程序中?

php - 如何将此查询转换为 SQL SERVER

mysql - 根据自定义计算字段过滤行

sql - 在PostgreSQL(可能还有其他引擎)中,为什么UNION语句将NULL值视为相同,而UNIQUE约束却不这样呢?

mysql - mysql表中使用汉字

java - org.hibernate.hql.ast.QuerySyntaxException : unexpected token:

mysql - 优化 MySQL 数据存储

SQL 首先选择某个值

PHP MySQL 内连接问题

sql - 测试时我想在变量中插入多个值