mysql 为选定的行数生成每列的总和

标签 mysql sum aggregate-functions

是否有任何简单的方法可以获取所选行数的每列的总和。 如果不是简单的仅 mysql 查询,任何 php/perl-mysql 组合也可以。

select sum(col-1),sum(col-2)....sum(col-N) from 4gc_1h_atch_enb where EVENT_TIME between '2014-04-15 00:00:00' and '2014-04-15 23:00:00' and ENB='310-120-401409(M)';

表有 50 多个列,而且我还必须对多个(30+)这样的表重复此操作。

最佳答案

您将需要对列和表的 INFORMATION_SCHEMA View 执行 CONCAT,然后对其执行 GROUP_CONCAT。基本结构如下所示:

SELECT CONCAT(GROUP_CONCAT(CONCAT('SUM(',COLUMN_NAME,')')),',',(SELECT GROUP_CONCAT(COLUMN_NAME) 
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = '4gc_1h_atch_enb'
AND DATA_TYPE <> 'int'))
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = '4gc_1h_atch_enb'
AND DATA_TYPE = 'int'

这将为您提供“sum(col-1),sum(col-2)....sum(col-N)”部分。您可以对表格执行类似的操作。 WHERE 部分也是 CONCAT 的一部分。最后您将有一个要执行的脚本。

关于mysql 为选定的行数生成每列的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23112666/

相关文章:

mysql - mysql中日期和时间的单独字段

MySQL左连接显示重复行

sql - 避免在 SQL 中使用相同条件的多个子查询

sql - 子查询 vs MAX 聚合函数性能

MySQL Sum 小时数

sql - Oracle SQL 分层查询 : Flatten Hierarchy and Perform Aggregation

mysql - 修复编码

php - 用于按时间范围对空帧进行分组的 SQL

mysql - MYSQL如何用相同的键求和,然后删除重复的行

r - 根据日期将列添加到具有值的表中