选择查询以从间隔表中获取值

时间:2015-03-01 11:23:04

标签: mysql sql

我有一张包含这些值的表......

id colA     colB      colC  
55 00:00:00 NULL      NULL  
56 01:01:02  0.00007   0.00007
57 02:01:02  0         0.00007
58 03:01:02  0.00006   0     
59 15:01:02  0.00012   0.00006
60 16:01:02 -0.00008   0.00012
61 20:59:02 -0.00006  -0.00008
62 21:05:01  0.00005  -0.00006
63 22:01:02 -0.00013   0.00005
64 23:01:02  0.00004  -0.00013
65 00:00:01 -0.00012   0.00004
66 01:01:02 -0.00004  -0.00012
67 02:01:02  0.00006  -0.00004
68 03:01:02  0.00004   0.00006
69 15:01:02 -0.00004   0.00004
70 16:01:02  0        -0.00004
71 23:01:02 -0.00014   0      
72 00:00:01 -0.00011  -0.00014
73 01:01:02 -0.00004  -0.00011
74 02:01:02  0.00011  -0.00004
75 03:01:02  0.00005   0.00011
76 15:01:02  0         0.00005
77 16:01:02 -0.00008   0      
78 23:01:02  0        -0.00008
79 00:00:01  0.00003   0      
80 01:01:02 -0.00009   0.00003
81 02:01:02 -0.00007   0      
82 03:01:02 -0.00007  -0.00016
83 15:01:02  0.00044  -0.00007
84 16:01:02  0         0.00044

现在我希望每次colA值变为15:01时得到colb,colc的SUM ... 输出应该类似于以下

colA            sum(colB)       SUM(colC)
 15:01:01.582   0.0002500   0.0002000
 15:01:01.582   -0.0002800  -0.0001200
 15:01:01.582   -0.0001300  -0.0001700
 15:01:01.582   0.0001600   -0.0002800

任何人都可以帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

您可以按照其后显示的cola 18:01个数来表征每一行。然后你可以按这个号码分组。

在MySQL中,获取此数字的最简单方法是使用变量:

select grp, max(cola), sum(colb), sum(colc)
from (select t.*,
             (@grp := @grp + (cola = '18:01')) as grp
      from table t cross join (select @grp := 0) vars
      order by id desc
     ) t
group by grp;