Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mengira Peratusan Gred Secara Dinamik dalam SQL?
Pengiraan peratusan dinamik SQL: cekap dan komprehensif
Soalan:
Memandangkan jadual SQL yang mengandungi nama pengguna dan gred, anda perlu mengira peratusan kejadian setiap gred yang mungkin. Cabarannya adalah untuk melaksanakan ini secara dinamik, membenarkan tindak balas daripada mana-mana medan teks terbuka.
Penyelesaian:
Terdapat tiga cara utama untuk menggunakan pernyataan SQL untuk mengira peratusan:
Kaedah 1: Pengoptimuman Kecekapan
<code class="language-sql">select Grade, count(*) * 100.0 / sum(count(*)) over() from MyTable group by Grade</code>
Kaedah ini adalah yang paling cekap, menggunakan fungsi "over()" untuk mengira peratusan berdasarkan keseluruhan set data.
Kaedah 2: Kebolehgunaan Universal
<code class="language-sql">select Grade, count(*) * 100.0 / (select count(*) from MyTable) from MyTable group by Grade;</code>
Kaedah ini berfungsi dengan mana-mana versi SQL, tidak kira sama ada ia menyokong fungsi "over()". Ia mengira peratusan berdasarkan jumlah bilangan baris dalam jadual.
Kaedah 3: Ungkapan Jadual Biasa (CTE)
<code class="language-sql">with t(Grade, GradeCount) as ( select Grade, count(*) from MyTable group by Grade ) select Grade, GradeCount * 100.0/(select sum(GradeCount) from t) from t;</code>
Kaedah ini kurang cekap berbanding dua sebelumnya, tetapi mungkin lebih berguna dalam pengiraan yang lebih kompleks. Ia menggunakan CTE untuk mengira kiraan gred dan peratusan secara bebas.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengira Peratusan Gred Secara Dinamik dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!