我有下表:
+----+---------------------+-------------+-----------------+ | id | stat_time | reads | writes | +----+---------------------+-------------+-----------------+ | 1 | 2013-07-18 20:00:00 | 42614543 | 1342129 | | 2 | 2013-07-18 21:00:00 | 23085319 | 326139 | | 3 | 2013-07-25 12:00:00 | 0 | 39639 | | 4 | 2013-07-25 13:00:00 | 754166 | 39639 | | 5 | 2013-07-25 14:00:00 | 693382 | 295323 | | 6 | 2013-07-25 15:00:00 | 1334462 | 0 | | 7 | 2013-07-25 16:00:00 | 10748367 | 261489 | | 9 | 2013-07-25 17:00:00 | 4337294 | 0 | | 10 | 2013-07-25 18:00:00 | 3002796 | 0 | | 11 | 2013-07-25 20:00:00 | 3002832 | 0 | | 12 | 2013-07-25 23:00:00 | 0 | 333468 | | 13 | 2013-07-26 17:00:00 | 10009585 | 0 | | 15 | 2013-07-26 18:00:00 | 6005752 | 0 | | 17 | 2013-07-26 21:00:00 | 333663 | 0 | +----+---------------------+-------------+-----------------+
我想执行以下操作:
SELECT stat_time, SUM(reads), SUM(writes) from this_table GROUP BY stat_time HAVING 'the same day'..
因此,输出三行的命令(第一行用于2013-07-18,第二行用于2013-07-25,第三行用于2013-07-26),并且该列中的每个此类行读/写的总和为在这一天读取/写入。
谢谢大卫
您想要将转换stat_time为一天来执行此操作。该方法取决于数据库。这是一种方法:
stat_time
SELECT cast(stat_time as date) as stat_day, SUM(reads), SUM(writes) from this_table GROUP BY cast(stat_time as date) order by stat_day;
以下是一些其他方法(适用于MySQL和Oracle):
SELECT date(stat_time) as stat_day, SUM(reads), SUM(writes) from this_table GROUP BY date(stat_time) order by stat_day; SELECT trunc(stat_time) as stat_day, SUM(reads), SUM(writes) from this_table GROUP BY trunc(stat_time) order by stat_day;