正如我们大多数人所知,数据库系统内置了聚合函数 SUM,它以列名作为参数并返回该列中元素的总和。
我想知道是否有另一种方法可以使用某些查询来对列的元素求和。
请记住,我不想作为使用存储过程和游标来循环遍历元素并进行一些计算的答案。
所以...是否有另一种方法来求和列的元素(不使用内置聚合函数 SUM() )
PS这个问题看起来很奇怪,但我确实有理由问它!
你可以尝试这样的事情:
DECLARE v_sum INT
SELECT v_sum = v_sum + intcol As RunningTotal
FROM Table
最后的值v_sum
将是 的总和intcol
。
你可以这样做:
SET @values='SELECT GROUP_CONCAT(columnWithNumbers SEPARATOR \'+\')as sumall FROM table';
SET @select = CONCAT('SELECT ', @values);
PREPARE stmt FROM @select;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
未经测试。
或更简单的解释,您复制此查询的结果
SELECT GROUP_CONCAT(columnWithNumbers SEPARATOR '+')as sumall FROM table
并在之前添加一个选择并将刚刚复制的结果粘贴到新查询中。
理论上,您可以在表上创建触发器,这将执行以下操作:
Update other_table set value=value+NEW.field_have_be_summed where option='sum';
但很难说你到底想要什么。