So erhalten Sie den Durchschnitt der DATETIME-Spalte in MySQL beim Gruppieren nach anderen Spalten
P粉460377540
P粉460377540 2023-09-05 11:46:21
0
1
497
<p>Ich erstelle und fülle eine MySQL-Tabelle mit der folgenden Abfrage: </p> <pre class="brush:php;toolbar:false;">SET time_zone = '+00:00'; CREATE TABLE timestamp_n_datetime ( id INT, Uhrzeit DATETIME, avg_time DATETIME ); INSERT INTO timestamp_n_datetime(id,time,avg_time) VALUES("1","2023-01-03 10:12:13", NULL), („1“, „2023-02-04 11:13:14“, NULL), („2“, „2023-03-02 09:14:10“, NULL), („2“, „2023-04-02 05:15:50“, NULL), („1“, „2023-06-10 02:04:10“, NULL);</pre> <p>Ich möchte die Spalte „avg_time“ mit dem Durchschnitt der Spalte „time“, gruppiert nach ID, füllen. Beispielsweise hat die erste Zeile „id“ = 1, daher sollte die Spalte „avg_time“ den Durchschnitt der ersten, zweiten und fünften Zeile annehmen, da deren „id“ ebenfalls 1 ist. </p> <p>Wie soll ich diese Frage beantworten? </p> <p>Bearbeiten: Zur Verdeutlichung möchte ich alle DATETIME-Spalten in Millisekunden umwandeln, sie alle addieren und dann durch die hinzugefügte Zahl dividieren. Wenn Sie beispielsweise für id=2 diese Werte in Millisekunden umrechnen, addieren und dann durch 2 dividieren (da es zwei Zeilen mit „id“ = 2 gibt), erhalten Sie den Durchschnitt für den 17. März 2023 um 17:45:00 Uhr. Ich möchte auf diese Weise den Durchschnitt ermitteln. </p>
P粉460377540
P粉460377540

Antworte allen(1)
P粉347804896

使用此 UNIX_TIMESTAMP 转换为秒,然后使用 FROM_UNIXTIME 将其恢复为日期时间格式,这就是获取平均值的方法:

select id, FROM_UNIXTIME(AVG(UNIX_TIMESTAMP(`time`)))
    from timestamp_n_datetime
    group by id;

这是填充平均值的方法:

update timestamp_n_datetime  td
inner join (
    select id, FROM_UNIXTIME(AVG(UNIX_TIMESTAMP(`time`))) as average
    from timestamp_n_datetime
    group by id
) as s on s.id = td.id
set avg_time = s.average;
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage