Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mengira Peratusan Gred Secara Dinamik dalam SQL?

Bagaimanakah Saya Boleh Mengira Peratusan Gred Secara Dinamik dalam SQL?

Susan Sarandon
Susan Sarandonasal
2025-01-17 04:12:09963semak imbas

How Can I Dynamically Calculate Grade Percentages in 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!

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