mysql(mariadb)更新时计算的百分比列

roqulrg3  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(466)

我正在尝试实现一个计算的(虚拟的?)列,该列在insert上更新,以便不使用触发器、交叉连接或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上找不到一个虚拟的专栏来处理这个问题。

0md85ypi

0md85ypi1#

计算列每行中的值不能依赖于表中其他行中的值。
您可能希望考虑视图而不是计算列。这是视图的定义。注意,它是所有金额的总和。

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

相关问题