如何使用mysql对列中的元素求和
正如我们大多数人所知,数据库系统具有内置聚合函数SUM,该函数以列名为参数,并返回该列中元素的总和 我想知道是否有其他方法可以使用某种查询对列的元素求和 请记住,我不想作为一个asnwer使用存储过程和游标循环遍历元素并进行一些计算 所以。。。是否有其他方法对列的元素求和(不使用内置聚合函数sum())如何使用mysql对列中的元素求和,mysql,database,Mysql,Database,正如我们大多数人所知,数据库系统具有内置聚合函数SUM,该函数以列名为参数,并返回该列中元素的总和 我想知道是否有其他方法可以使用某种查询对列的元素求和 请记住,我不想作为一个asnwer使用存储过程和游标循环遍历元素并进行一些计算 所以。。。是否有其他方法对列的元素求和(不使用内置聚合函数sum()) 另外,这个问题看起来很奇怪,但我有理由问它 理论上,您可以在表上创建触发器,它将执行以下操作: Update other_table set value=value+NEW.field_hav
另外,这个问题看起来很奇怪,但我有理由问它 理论上,您可以在表上创建触发器,它将执行以下操作:
Update other_table set value=value+NEW.field_have_be_summed where option='sum';
但是很难说你到底想要什么。你可以试试这样的东西:
DECLARE v_sum INT
SELECT v_sum = v_sum + intcol As RunningTotal
FROM Table
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;
最后的
v_sum
的值将是intcol
的和,您可以这样做:
DECLARE v_sum INT
SELECT v_sum = v_sum + intcol As RunningTotal
FROM Table
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
然后添加一个select,然后将刚才复制的结果粘贴到新查询中。您到底想要什么?你现在的问题似乎更像是一种陈述,而不是任何东西。你为什么想要这个?聚合
SUM()
已经由RDBMS进行了高度优化,并且可以完全受WHERE
、over join操作等的限制。您为什么想要另一种方式?SUM()
不适合你吗?它在MySQL中工作……因为几天前我问了一个复杂的问题,但没有得到答案。这就是我问这个问题的原因。如果我得到了这个问题的答案,那么我将尝试做我想要的(这与对列元素求和完全不同)SUM()是最好的,你应该喜欢它。这个很有趣。我想计算一个地理距离,其中列中的每个元素都是一个点。然而,我有两列:纬度和经度,我想对千列中的每两行应用哈弗森公式。对不起,我不清楚你到底想要什么。如果需要所有距离的和(取决于所使用的公式/代数),可以使用和(a+b)或和(aa+bb)。