Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mengira Peratusan Padanan Baris dengan Cekap dalam PostgreSQL?

Bagaimana untuk Mengira Peratusan Padanan Baris dengan Cekap dalam PostgreSQL?

Linda Hamilton
Lepaskan: 2024-12-27 09:10:12
asal
602 orang telah melayarinya

How to Efficiently Calculate Percentages of Matching Rows in PostgreSQL?

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;
Salin selepas log masuk

Penjelasan

Pertanyaan ini:

  • Mengira bilangan baris di mana value_a = value_b menggunakan COUNT(.. .).
  • Mengendalikan nilai NULL dengan menggunakan ungkapan (value_a = value_b ATAU NULL).
  • Membahagikan bilangan baris yang sepadan dengan jumlah kiraan baris menggunakan (COUNT(...) * 100) / COUNT(*).
  • Mengira peratusan tanpa memerlukan fungsi luaran.
  • Kumpulkan hasil mengikut property_name untuk memaparkan peratusan bagi setiap harta kumpulan.

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;
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan