Pengiraan Peratusan daripada SUM() Dalam Pertanyaan PostgreSQL
Memahami Pertanyaan
The pertanyaan yang disediakan bertujuan untuk mengira peratusan baris di mana nilai_a dan nilai_b dalam jadual my_obj adalah sama. Walau bagaimanapun, ia menghadapi ralat kerana lajur nb_ok, yang dirujuk dalam prosedur tersimpan compute_percent, tidak wujud.
Penyelesaian Dioptimumkan
Untuk menangani isu ini, pertimbangkan yang lebih cekap pendekatan:
SELECT property_name, (COUNT(value_a = value_b OR NULL) * 100) / COUNT(*) AS pct FROM my_obj GROUP BY property_name;
Penjelasan
Pertanyaan ini:
Termasuk Digit Pecahan
Untuk mengekalkan digit pecahan dalam keputusan, gunakan pertanyaan yang diubah suai berikut:
SELECT property_name, ROUND((COUNT(value_a = value_b OR NULL) * 100.0) / COUNT(*), 2) AS pct FROM my_obj GROUP BY property_name;
Ini versi menggunakan ROUND(...) untuk membundarkan peratusan kepada dua tempat perpuluhan.
Atas ialah kandungan terperinci Bagaimana untuk Mengira Peratusan Padanan Baris dengan Cekap dalam PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!