Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MYSQL(MariaDB)更新时计算的百分比列_Mysql_Mariadb - Fatal编程技术网

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

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,金额

我试图实现一个计算(虚拟?)列,该列在insert上进行更新,以避免使用触发器、交叉连接或CTE。我希望做的是按一个字段(Col1)分组,并计算给定行在表中占总数的百分比。例如:


+------+-----+------+
|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)

我很感激你的回答,如果是真的,这可以解释我在其他平台上所遇到的困难。我知道我可以做一些外部的事情,比如视图,但这不是目标。