Mengira Peratusan Gred dengan Cekap daripada Data Tidak Berstruktur dengan SQL
Menyimpan gred sebagai teks percuma dalam pangkalan data memberikan cabaran apabila mengira taburan peratusan gred. Artikel ini menawarkan penyelesaian SQL untuk mengira peratusan ini untuk semua gred, walaupun tanpa nilai gred yang dipratakrifkan.
Pertanyaan SQL untuk Pengiraan Peratusan
Pertanyaan SQL ini memanfaatkan fungsi over()
untuk pengiraan peratusan yang cekap merentas nilai gred unik:
<code class="language-sql">SELECT Grade, COUNT(*) * 100.0 / SUM(COUNT(*)) OVER () FROM MyTable GROUP BY Grade;</code>
Fungsi over()
mengira jumlah kiraan baris merentas keseluruhan jadual, membolehkan pengiraan peratusan tanpa perlu menyatakan semua gred yang mungkin.
Pertanyaan SQL Alternatif (untuk Pangkalan Data tanpa Fungsi over()
)
Untuk pangkalan data yang tidak mempunyai fungsi over()
, pertanyaan alternatif ini menggunakan subkueri:
<code class="language-sql">SELECT Grade, COUNT(*) * 100.0 / (SELECT COUNT(*) FROM MyTable) FROM MyTable GROUP BY Grade;</code>
Pendekatan ini menggunakan subkueri untuk mendapatkan jumlah kiraan baris, kemudian mengira peratusan.
Nota Penting: Penyelesaian ini mengira peratusan dengan tepat apabila data gred disimpan sebagai nilai aksara tunggal (cth., 'A', 'B', 'C'). Format gred yang lebih kompleks dalam teks tidak berstruktur memerlukan prapemprosesan untuk mengekstrak nilai gred sebelum menggunakan pertanyaan SQL ini.
Atas ialah kandungan terperinci Bagaimanakah SQL Boleh Mengira Taburan Peratusan Gred daripada Data Teks Tidak Berstruktur?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!