Comment obtenir la moyenne de la colonne DATETIME dans MySQL tout en regroupant par d'autres colonnes
P粉460377540
P粉460377540 2023-09-05 11:46:21
0
1
481
<p>Je crée et remplis une table MySQL à l'aide de la requête suivante : </p> <pre class="brush:php;toolbar:false;">SET time_zone = '+00:00'; CREATE TABLE timestamp_n_datetime ( identifiant INT, heure DATEHEURE, avg_time DATETIME ); INSÉRER DANS timestamp_n_datetime(id,time,avg_time) VALEURS ("1", "03/01/2023 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>Je souhaite remplir la colonne "avg_time" avec la moyenne de la colonne "time" regroupée par identifiant. Par exemple, la première ligne a « id » = 1, donc la colonne « avg_time » doit prendre la moyenne des première, deuxième et cinquième lignes puisque leur « id » est également 1. </p> <p>Comment dois-je répondre à cette question ? </p> <p>Modifier : pour clarifier, je souhaite convertir toutes les colonnes DATETIME en millisecondes, les additionner toutes, puis les diviser par le nombre ajouté. Par exemple, pour id=2, les convertir en millisecondes, les additionner puis les diviser par 2 (puisqu'il y a deux lignes avec « id » = 2) donne la moyenne du 17 mars 2023 à 17h45. Je veux obtenir la moyenne de cette façon. </p>
P粉460377540
P粉460377540

répondre à tous(1)
P粉347804896

Utilisez ceci UNIX_TIMESTAMP 转换为秒,然后使用 FROM_UNIXTIME pour le remettre au format datetime, voici comment obtenir la moyenne :

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

Voici comment remplir la moyenne :

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;
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal