Name | Datum | Stunden | Zählen |
---|---|---|---|
Mühlen | 2022-07-17 | 23 | 12 |
Mühlen | 2022-07-18 | 00 | 15 |
Mühlen | 2022-07-18 | 01 | 20 |
Mühlen | 2022-07-18 | 02 | 22 |
Mühlen | 2022-07-18 | 03 | 25 |
Mühlen | 2022-07-18 | 04 | 20 |
Mühlen | 2022-07-18 | 05 | 22 |
Mühlen | 2022-07-18 | 06 | 25 |
Mike | 2022-07-18 | 00 | 15 |
Mike | 2022-07-18 | 01 | 20 |
Mike | 2022-07-18 | 02 | 22 |
Mike | 2022-07-18 | 03 | 25 |
Mike | 2022-07-18 | 04 | 20 |
Meine aktuelle Eingabetabelle speichert kontinuierlich jede Stunde des Tages aufgezeichnete Zählinformationen. Ich muss die Differenz aufeinanderfolgender Zählwerte extrahieren, aber da ich gezwungen bin, MySQL 5.7 zu verwenden, habe ich Probleme damit.
Die Anfrage, die ich geschrieben habe, lautet wie folgt:
SET @cnt := 0; SELECT Name, Date, Hours, Count, (@cnt := @cnt - Count) AS DiffCount FROM Hourly ORDER BY Date;
Dies liefert keine genauen Ergebnisse.
Ich möchte folgende Ausgabe erhalten:
Name | Datum | Stunden | Zählen | Unterschied |
---|---|---|---|---|
Mühlen | 2022-07-17 | 23 | 12 | 0 |
Mühlen | 2022-07-18 | 00 | 15 | 3 |
Mühlen | 2022-07-18 | 01 | 20 | 5 |
Mühlen | 2022-07-18 | 02 | 22 | 2 |
Mühlen | 2022-07-18 | 03 | 25 | 3 |
Mühlen | 2022-07-18 | 04 | 20 | 5 |
Mühlen | 2022-07-18 | 05 | 22 | 2 |
Mühlen | 2022-07-18 | 06 | 25 | 3 |
Mike | 2022-07-18 | 00 | 15 | 0 |
Mike | 2022-07-18 | 01 | 20 | 5 |
Mike | 2022-07-18 | 02 | 22 | 2 |
Mike | 2022-07-18 | 03 | 25 | 3 |
Mike | 2022-07-18 | 04 | 20 | 5 |
Mike | 2022-07-18 | 05 | 22 | 2 |
Mike | 2022-07-18 | 06 | 25 | 3 |
Bitte schlagen Sie vor, was mir fehlt.
尝试以下操作:
查看来自 db-fiddle 的演示。
在MySQL 5.7中,您可以内联更新变量,以包含更新后的“Count”值。由于当“Name”的值更改时,您需要重置变量,因此您可以使用包含先前“Name”值的另一个变量。然后使用
IF
函数检查:它将与
ABS
a> 函数,对差值应用绝对值。请在此处查看演示。
在MySQL 8.0中,您可以使用像
LAG
顺利获得输出。它将与:ABS
应用绝对值差异值,COALESCE
用于删除第一个空值。请在此处查看演示。