您需要的是一个触发器,以防您希望自动完成此操作,但目前我将专注于实际查询。因此,假设您有两个字段,一个表示持有值,另一个表示持有百分比(其他字段,根据业务需要可以存在),但让我向您展示仅使用这两个字段的示例
Person | Value | Percentage
让我们进一步假设,根据您的示例,A 购买了价值 50 美元的股票
您需要调用(在插入触发器之后可能很好,或单独调用)此查询,该查询使用不那么推荐的方法通过使用第二个子查询根据自己的聚合值更新表。但是,如果您想将其清理干净,则需要更新两个表,一个将保存份额的值,第二个将保存百分比。
CREATE TABLE SHARES (NAME VARCHAR(20), VALUE INTEGER, PERCENTAGE FLOAT);
INSERT INTO SHARES (NAME,VALUE) VALUES ('A',50);
UPDATE SHARES SET PERCENTAGE = VALUE/(SELECT TOTAL_VALUE FROM
(SELECT SUM(VALUE) AS TOTAL_VALUE
FROM SHARES) AS DUMMY)*100;
INSERT INTO SHARES (NAME,VALUE) VALUES ('B',10);
UPDATE SHARES SET PERCENTAGE = VALUE/(SELECT TOTAL_VALUE FROM
(SELECT SUM(VALUE) AS TOTAL_VALUE
FROM SHARES) AS DUMMY)*100;
小提琴位于http://www.sqlfiddle.com/#!2/cec38/1/0 希望这会有所帮助。