Bagaimana untuk mendapatkan purata lajur DATETIME dalam MySQL semasa mengumpulkan mengikut lajur lain
P粉460377540
2023-09-05 11:46:21
<p>Saya sedang mencipta dan mengisi jadual MySQL menggunakan pertanyaan berikut: </p>
<pre class="brush:php;toolbar:false;">SET zon_masa = '+00:00';
CIPTA JADUAL cap masa_n_datetime (
id INT,
masa DATETIME,
avg_time DATETIME
);
INSERT IN TO timestamp_n_datetime(id,time,avg_time)
NILAI("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);</pra>
<p>Saya ingin mengisi lajur "avg_time" dengan purata lajur "masa" yang dikumpulkan mengikut id. Sebagai contoh, baris pertama mempunyai 'id' = 1, jadi lajur 'avg_time' harus mengambil purata baris pertama, kedua dan kelima kerana 'id' mereka juga 1. </p>
<p>Bagaimanakah saya harus menjawab soalan ini? </p>
<p>Edit: Untuk menjelaskan, saya ingin menukar semua lajur DATETIME kepada milisaat, tambah semuanya dan kemudian bahagikan dengan nombor yang ditambahkan. Contohnya, untuk id=2, menukarkannya kepada milisaat, menambahnya dan kemudian membahagikannya dengan 2 (memandangkan terdapat dua baris dengan "id" = 2) memberikan purata untuk 17 Mac 2023 pada 5:45:00 PTG. Saya mahu mendapatkan purata dengan cara ini. </p>
Gunakan ini
UNIX_TIMESTAMP
转换为秒,然后使用FROM_UNIXTIME
untuk mengembalikannya ke format datetime, ini adalah cara anda mendapatkan purata:Begini cara mengisi purata: