如何更正mysql表中递增值的重置

thtygnil  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(365)

我使用一个mysql表,保存我通过rs485收集的传感器值。传感器对已经进入电池的电量进行汇总。放电时为正,充电时为负。
不幸的是,我在事故中重置了测量模块。。所以我的充电速度从一排下降到另一排161安培每小时,新的数据与零点有关。在这里您可以看到我的表结构,其中包含费用、工时和时间的重置值。事件发生的行以蓝色突出显示。
我怎样才能用最好的方法来纠正这个问题?我想创建一个表,用resetid(s)作为索引(对于再次发生的情况),用偏移量作为列。但我还没有找到一种方法将其整合到我的查询中。
我用这些数据做统计。最重要的是收费时差或天或前10天与最好的收费天。daystats查询示例(事件发生前的一段时间)如下所示:

SELECT 
   id                                                        AS _cid, 
   curtime                                                   AS mynow, 
   Date_format(curtime, '%H%:00')                            AS date, 
   Round(Min(CURRENT) / 10, 2)                               AS 'min current', 
   Round(Avg(CURRENT) / 10, 2)                               AS 'avg current', 
   Round(Max(CURRENT) / 10, 2)                               AS 'max current', 
   Round(Min(power) / 1000, 2)                               AS 'min power', 
   Round(Avg(power) / 1000, 2)                               AS 'avg power', 
   Round(Max(power) / 1000, 2)                               AS 'max power', 
   charge / 1000                                             AS 'charge', 
   Round(( ( (SELECT charge 
              FROM   MeasurementData.SolarPower 
              WHERE  Max(_cid) = id) - charge ) / 1000 ), 2) AS chgDiff 
   FROM   MeasurementData.SolarPower 
   WHERE  Day(curtime) = Day('2018-05-05 12:00:00') 
   GROUP  BY Hour(curtime) 
   ORDER  BY mynow DESC

这将是日统计的正常输出
周统计数据几乎是相同的查询。但这里的重置显示了它的效果。。

SELECT 
       id                                                        AS _cid, 
       curtime                                                   AS mynow, 
       Date_format(curtime, '%d%.%m.%Y')                         AS date, 
       Date_format(curtime, '%W')                                AS weekday, 
       Round(Min(CURRENT) / 10, 2)                               AS 'cur-min', 
       Round(Avg(CURRENT) / 10, 2)                               AS 'cur-avg', 
       Round(Max(CURRENT) / 10, 2)                               AS 'cur-max', 
       Round(Min(power) / 1000, 2)                               AS 'pow-min', 
       Round(Avg(power) / 1000, 2)                               AS 'pow-avg', 
       Round(Max(power) / 1000, 2)                               AS 'pow-max', 
       Round((SELECT charge 
              FROM   MeasurementData.SolarPower
              WHERE  Max(_cid) = id) / 1000, 2)                  AS chg, 
       Round((((SELECT charge 
                  FROM   MeasurementData.SolarPower
                  WHERE  Max(_cid) = id) - charge ) / 1000 ), 2) AS chgDiff 
FROM   MeasurementData.SolarPower
WHERE  curtime >= Date_sub('2018-05-05 12:00:00', interval 6 day) 
GROUP  BY DATE 
ORDER  BY mynow DESC

输出结果:复位事件清晰可见。
顺便说一句。。。我不太擅长sql,显示的查询非常慢。有什么改进的建议吗?
提前谢谢你们。

l2osamch

l2osamch1#

您确定表中的某个特定值“不正确”?然后使用 UPDATE 带有 WHERE 子句指定要更改的特定行。
您确定表中的某一列在某个时间范围内需要通过某个常量值进行调整吗?然后使用 UPDATE 带有 WHERE 子句指定要更改的特定行。

相关问题