Mysql 选择“查询”以从间隔表中获取值
我有一个包含这些值的表Mysql 选择“查询”以从间隔表中获取值,mysql,sql,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.0
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
现在我想得到colb的和,每次colA值变为15:01时的colc。。。
输出应该如下所示
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
任何人都可以帮我完成这个查询。您可以通过后面出现的
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;
你能不能更准确地解释一下你所说的“间隔时间”是什么意思。这可以用多种方式来解释。也许您可以在表中提供预期的输出?@turphile…每次colA值更改为18:01时的总和(colb),但应该从最后16:01开始。我没有使用任何主键here@Turophile...please请看,我已经添加了所需的输出。我不明白如何从该数据集生成结果集。也许换一个更小/更简单的?@草莓…我已经编辑了我的帖子…我不确定它是否精确…再次抱歉亲爱的