Heim  >  Fragen und Antworten  >  Hauptteil

So erhalten Sie den Durchschnitt der DATETIME-Spalte in MySQL beim Gruppieren nach anderen Spalten

<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粉460377540P粉460377540411 Tage vor437

Antworte allen(1)Ich werde antworten

  • P粉347804896

    P粉3478048962023-09-06 10:33:08

    使用此 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;

    Antwort
    0
  • StornierenAntwort