数据集:
创建语句:
创建表table1
(
TimeOfDay
DATETIME(3),
SrlNum
FLOAT(5),
Curr
FLOAT(5),
Volt
FLOAT(5),
主键(TimeOfDay
,SrlNum
)
)
Image
这就是我想要的值,其中电流在电流减小之前就接近于零,并且每个组都具有相应的电压值,而不必对其进行硬编码,即无需指定包装和执行结合。我要一个查询来做。
我尝试了联接,但是对于我的数据集来说效率很低。
SrlNum 241 242 .. 249
Curr 0 0 0 0 ... -1000 .. 0。 0。 -200 ...
对应的伏特400400400400..320310290..400。 0. 0。 380
需要在电流变为-1000之前找到每个组的电压。 我正在尝试获取curr = 0的时间戳记,直到它变为-1000。 我可以通过对每个SrlNum进行硬编码来做到这一点,但是不能通过一个查询对所有组进行硬编码,因此我想删除硬编码。
我想使用MySql查询为表中每个组的特定时间戳显示x,y,z字段。
我的子查询返回每个组的最小时间戳,但是在此之前我需要显示30个时间戳的值,这意味着我必须进行偏移,但是由于我的子查询返回多个值,因此时间戳'<'子查询显然不起作用。 / p>
我需要找到解决此问题的方法。
所以下面的查询给出了我想要的结果,但是我目前不得不通过提及SrlNum对其进行硬编码。
我希望查询能够显示所有偏移值而不必对SrlNum进行硬编码,因为组将不断增加,并且我希望查询显示自动更新。
我尝试使用Joins,但是我的数据集是如此庞大,以至于self joins太简单了,运行起来太费时间。我已经尝试过重组查询,但是没有返回我想要的内容。
我也尝试了变量和超前及滞后函数,但这些函数与我的MySql版本不兼容。
最近,我尝试使用(select max(TimeOfDay) as ToD1, Volt as 'V1', SrlNum from(
(select TimeOfDay, Curr, Volt, SrlNUM from table where TimeOfDay < (select min(TimeOfDay) from table where Curr<-1234 and SrlNum=243) order by TimeOfDay desc Limit 1 Offset 31)
union
(select TimeOfDay, Curr, Volt, SrlNUM from table where TimeOfDay < (select min(TimeOfDay) from table where Curr<-1234 and SrlNum=244) order by TimeOfDay desc Limit 1 Offset 31)
union
(select TimeOfDay, Curr, Volt, SrlNUM from table where TimeOfDay < (select min(TimeOfDay) from table where Curr<-1234 and SrlNum=245) order by TimeOfDay desc Limit 1 Offset 31)
union
(select TimeOfDay, Curr, Volt, SrlNUM from table where TimeOfDay < (select min(TimeOfDay) from table where Curr<-1234 and SrlNum=246) order by TimeOfDay desc Limit 1 Offset 31)
union
.
.
.
)as a group by BMU_Debug_pack_SrlNum) as c