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

mysql为选定的行生成每列的总和,mysql,sum,aggregate-functions,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多个这

是否有任何简单的方法可以获得所选行数的每列总和。 如果不是简单的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多个这样的表重复这一点。

您将需要使用列和表的信息模式视图进行CONCAT,然后使用它进行组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'

这将为您提供sumcol-1、sumcol-2……sumcol-N部件。你可以对桌子做类似的事情。WHERE部分也是CONCAT的一部分。最后,您将有一个脚本要执行。

您是否在询问生成sumcol-1。。。基于单个表布局的查询的sumcol-n部分?构建一个包含50列的表可能有完全正当的理由,但这类表通常是设计不佳的症状。表的数量也是如此。我在这里只把动态SQL看作是一个选项-一个丑陋的选项-对不起。@frlan我本来想要一种简单的查询方式,但如果没有,我对动态生成sumcol-1…查询没问题itself@Strawberry它实际上为BI工具导入了巨大的原始日志。所以真的没有任何控制权!奇怪的是,结尾缺少了最后的括号。据我所知,这件事已经解决了,对吗?SUMNE_ID,SUMINIT_trunt,…,SUMCOMB_RSC_FULL,SUMCOMB_SYS还有什么方法可以修改这个查询,只包含列名,而不包含非整数和非浮点列类型的和?