MYSQL(MariaDB)计算的更新百分比列

时间:2018-09-08 18:47:17

标签: mysql mariadb

我正在尝试获得一个在插入时更新的计算(虚拟)列,以免使用触发器,交叉联接或CTE。我希望做的是按一个字段分组(Col1),然后计算表中给定行占总数的百分比。例如:

+------+-----+------+ | Col1 | Amt | Pct | +------+-----+------+ | foo | 10 | 0.5 | | foo | 5 | 0.25 | | bar | 15 | 1 | | foo | 5 | 0.25 | +------+-----+------+ 已插入新行... {Col1: bar, Amt: 5} +------+-----+------+ | Col1 | Amt | Pct | +------+-----+------+ | foo | 10 | 0.5 | | foo | 5 | 0.25 | | bar | 15 | 0.75 | | foo | 5 | 0.25 | | bar | 5 | 0.25 | +------+-----+------+ 任何帮助表示赞赏。我尝试搜索包括forks在内的各种帖子,但没有找到在MariaDB上实现此目的的虚拟列方式。

1 个答案:

答案 0 :(得分:1)

计算列的每一行中的值都不能依赖于表的其他行中的值。

您可能希望考虑使用视图而不是计算列。这是视图的定义。请注意,它需要所有金额的总和。

SELECT a.Col1, a.Amt,  
       (100.0 * A.Amt / B.Tot) Pct
  FROM tbl a
  JOIN (SELECT SUM(Amt) Tot FROM tbl)