Rumah >pangkalan data >tutorial mysql >Bagaimana untuk mengira purata medan untuk setiap gabungan unik dua medan lain menggunakan SQL?
Pertanyaan SQL dengan AVG dan GROUP BY: Mengekstrak Nilai Purata untuk Setiap Medan
Anda mencari pertanyaan SQL yang mengekstrak maklumat khusus daripada jadual , iaitu purata medan 'val' untuk setiap nilai 'id' dan 'lulus' yang unik.
Untuk mencapai ini, anda boleh menggunakan pertanyaan yang mudah tetapi cekap:
<code class="sql">SELECT id, pass, AVG(val) AS val_1 FROM data_r1 GROUP BY id, pass;</code>
Pertanyaan ini mengumpulkan data mengikut 'id' dan 'pass,' mengira nilai purata 'val' untuk setiap gabungan. Jadual yang terhasil termasuk baris untuk setiap pasangan unik nilai 'id' dan 'pass'.
Sebagai alternatif, jika anda lebih suka satu baris untuk setiap 'id' unik dengan nilai purata untuk semua nilai 'pass' , gunakan pertanyaan ini:
<code class="sql">SELECT d1.id, (SELECT IFNULL(ROUND(AVG(d2.val), 4) ,0) FROM data_r1 d2 WHERE d2.id = d1.id AND pass = 1) as val_1, (SELECT IFNULL(ROUND(AVG(d2.val), 4) ,0) FROM data_r1 d2 WHERE d2.id = d1.id AND pass = 2) as val_2, (SELECT IFNULL(ROUND(AVG(d2.val), 4) ,0) FROM data_r1 d2 WHERE d2.id = d1.id AND pass = 3) as val_3, (SELECT IFNULL(ROUND(AVG(d2.val), 4) ,0) FROM data_r1 d2 WHERE d2.id = d1.id AND pass = 4) as val_4, (SELECT IFNULL(ROUND(AVG(d2.val), 4) ,0) FROM data_r1 d2 WHERE d2.id = d1.id AND pass = 5) as val_5, (SELECT IFNULL(ROUND(AVG(d2.val), 4) ,0) FROM data_r1 d2 WHERE d2.id = d1.id AND pass = 6) as val_6, (SELECT IFNULL(ROUND(AVG(d2.val), 4) ,0) FROM data_r1 d2 WHERE d2.id = d1.id AND pass = 7) as val_7 from data_r1 d1 GROUP BY d1.id</code>
Pertanyaan ini menggunakan subkueri bersarang untuk setiap nilai 'lulus' untuk mengira purata. Ia kemudian mengagregatkan hasil dengan 'id,' memberikan paparan data yang disatukan.
Atas ialah kandungan terperinci Bagaimana untuk mengira purata medan untuk setiap gabungan unik dua medan lain menggunakan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!