MySQL试图获得每小时摘要并依赖行数据

时间:2011-02-24 08:35:38

标签: mysql

MyTable是:

tday   char(3)
dow    int(1)
tdate  date
ttime  time
T0     decimal(5,2)
T1     decimal(5,2)
T2     decimal(5,2)
T3     decimal(5,2)
Total  decimal(8,2)

鉴于上述结构和以下数据:

DoW   IM     CDate       CTime     G0    G1   G2   G3

 Thu    4   2010-12-02   05:29:15    1    3    0    11
 Thu    4   2010-12-02   05:34:22    0    4    1    0
 Thu    4   2010-12-02   05:39:28    6    0    7    0
 Thu    4   2010-12-02   05:44:35    8    7    3    9
 Thu    4   2010-12-02   05:49:41    0    7    0    8
 Thu    4   2010-12-02   05:54:48    1    7    0    1
 Thu    4   2010-12-02   05:59:54    3    0    5    3
 Thu    4   2010-12-02   06:05:01    0    9    1    0
 Thu    4   2010-12-02   06:10:07    2    9   10    0
 Thu    4   2010-12-02   06:15:13    0    0   16    0
 Thu    4   2010-12-02   06:20:20    2    0    8    0
 Thu    4   2010-12-02   06:25:26    1    0    0    0
 Thu    4   2010-12-02   06:30:33    1    5   19   21
 Thu    4   2010-12-02   06:35:39    3    0    6    0
 Thu    4   2010-12-02   06:40:46    3    4    7    2
 Thu    4   2010-12-02   06:45:52    3    3    0   20
 Thu    4   2010-12-02   06:50:58    5    0    7   10
 Thu    4   2010-12-02   06:56:05    0    7    7    0
 Thu    4   2010-12-02   07:01:11    7    0   10    3
 Thu    4   2010-12-02   07:06:18    0    0    0    1
 Thu    4   2010-12-02   07:11:24    0    0    0    0
 Thu    4   2010-12-02   07:16:31    9    3    1    0
 Thu    4   2010-12-02   07:21:37    0    0    3   10
 Thu    4   2010-12-02   07:26:44    0    1    3    0

我想要得到的是每天小时G0..G3列的总和。

我已尝试通过CDate的CTime顺序从MyTable组中选择CTime,sum(G0),sum(G1),sum(G2),sum(G3);“和各种类似的陈述没有取得任何成功。我想要得到的结果如下:

DoW    IM   CDate        CTime      G0   G1   G2   G3

Thu    4    2010-12-02   05:00:00   19   28   16   32
Thu    4    2010-12-02   06:00:00   20   51   86   65
Thu    4    2010-12-02   07:00:00   16    4   17   14

你能帮忙吗?我花了很多时间在Web上查看已经提交的解决方案和其他答案,但是在我需要的特定SQL语句中没有任何内容可以接近。

感谢。格雷厄姆

2 个答案:

答案 0 :(得分:2)

我认为你正在寻找像

这样的东西
SELECT DoW, IM, CDate, HOUR(CTime) AS recorded_hour, SUM(G0) AS sum_0, 
    SUM(G1) AS sum)1, SUM(G2) AS sum_2, SUM(G3) AS sum_3
FROM MyTable
GROUP BY recorded_hour

如果您希望不同日期的小时不同,那么您只需将日期列添加到group by子句

答案 1 :(得分:1)

什么类型的CTime和CDate? 您的过去可以在pre& code

中使用普通表结构吗?

尝试运行:
Select CDate, HOUR(CTime), sum(G0), sum(G1), sum(G2), sum(G3) from MyTable group by CDate, HOUR(CTime) order by CDate, CTime

HOUR function