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

时间:2014-04-16 14:40:07

标签: mysql sum aggregate-functions

有没有简单的方法来获取所选行数的每列的总和。 如果不是一个简单的mysql-only查询任何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+)这样的表重复这个。

1 个答案:

答案 0 :(得分:1)

您需要为COLumns和Tables执行带有INFORMATION_SCHEMA视图的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'

那将给你&#34; sum(col-1),sum(col-2).... sum(col-N)&#34;部分。你可以用表做类似的事情。 WHERE部分也是CONCAT的一部分。最后,您将有一个要执行的脚本。