Rumah >pangkalan data >tutorial mysql >Bagaimana untuk mengira purata medan untuk setiap gabungan unik dua medan lain menggunakan SQL?

Bagaimana untuk mengira purata medan untuk setiap gabungan unik dua medan lain menggunakan SQL?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-30 10:16:02336semak imbas

How to calculate the average of a field for each unique combination of two other fields using 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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn