MYSQL(MariaDB)更新时计算的百分比列
我试图实现一个计算(虚拟?)列,该列在insert上进行更新,以避免使用触发器、交叉连接或CTE。我希望做的是按一个字段(Col1)分组,并计算给定行在表中占总数的百分比。例如:MYSQL(MariaDB)更新时计算的百分比列,mysql,mariadb,Mysql,Mariadb,我试图实现一个计算(虚拟?)列,该列在insert上进行更新,以避免使用触发器、交叉连接或CTE。我希望做的是按一个字段(Col1)分组,并计算给定行在表中占总数的百分比。例如: +------+-----+------+ |Col1 | Amt | Pct| +------+-----+------+ |foo | 10 | 0.5| |富| 5 | 0.25| |巴| 15 | 1| |富| 5 | 0.25| +------+-----+------+ 插入新行{Col1:bar,金额
+------+-----+------+
|Col1 | Amt | Pct|
+------+-----+------+
|foo | 10 | 0.5|
|富| 5 | 0.25|
|巴| 15 | 1|
|富| 5 | 0.25|
+------+-----+------+
插入新行<代码>{Col1:bar,金额:5}
+------+-----+------+
|Col1 | Amt | Pct|
+------+-----+------+
|foo | 10 | 0.5|
|富| 5 | 0.25|
|巴| 15 | 0.75|
|富| 5 | 0.25|
|巴| 5 | 0.25|
+------+-----+------+
感谢您的帮助。我尝试过搜索各种帖子,包括forks,但在MariaDB上找不到一种虚拟列方式来实现这一点。计算列的每一行中的值不能依赖于表中其他行中的值 <>你可能希望考虑一个视图而不是一个计算列。这是视图的定义。注意,它取所有金额的总和
SELECT a.Col1, a.Amt,
(100.0 * A.Amt / B.Tot) Pct
FROM tbl a
JOIN (SELECT SUM(Amt) Tot FROM tbl)
我很感激你的回答,如果是真的,这可以解释我在其他平台上所遇到的困难。我知道我可以做一些外部的事情,比如视图,但这不是目标。