Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Mengira Peratusan Dengan Cekap Menggunakan SUM() dalam Pertanyaan PostgreSQL Tunggal?

Bagaimanakah Saya Boleh Mengira Peratusan Dengan Cekap Menggunakan SUM() dalam Pertanyaan PostgreSQL Tunggal?

Linda Hamilton
Lepaskan: 2025-01-01 01:08:09
asal
291 orang telah melayarinya

How Can I Efficiently Calculate Percentages Using SUM() in a Single PostgreSQL Query?

Mengira Peratusan daripada SUM() dalam Satu Pertanyaan SQL

Dalam PostgreSQL, anda mungkin menghadapi ralat semasa cuba mengira peratusan menggunakan SUM () dalam pertanyaan SQL yang sama. Masalah timbul apabila anda cuba mengakses lajur yang belum wujud, seperti nb_ok dalam contoh anda.

Penyelesaian Dioptimumkan

Pendekatan yang lebih cekap dan tepat untuk mengira peratusan ialah menggunakan pertanyaan berikut:

SELECT property_name,
       (count(value_a = value_b OR NULL) * 100) / count(*) AS pct
FROM   my_obj
GROUP  BY 1;
Salin selepas log masuk

Pertanyaan ini mengambil yang berikut langkah:

  1. Mengira bilangan baris dengan nilai_a bersamaan dengan nilai_b, tanpa mengira nilai NULL, menggunakan count(value_a = value_b ATAU NULL).
  2. Membahagikan hasil dengan jumlah bilangan baris dalam jadual menggunakan count(*).
  3. Mendarabkan hasil dengan 100 untuk menyatakan nisbah sebagai peratusan.

Mengendalikan Nilai NULL

Penggunaan OR NULL dalam ungkapan count() memastikan nilai NULL tidak dikira . Ini penting jika jadual anda mengandungi nilai NULL, kerana ia menghalang keputusan yang salah atau ralat pembahagian demi sifar.

Memaksa Digit Pecahan

Untuk mengekalkan digit pecahan dalam hasilnya, anda boleh menggunakan 100.0 dan bukannya 100, menghasilkan pengiraan berangka yang mengelakkan pemotongan:

SELECT property_name,
       round((count(value_a = value_b OR NULL) * 100.0) / count(*), 2) AS pct
FROM   my_obj
GROUP  BY 1;
Salin selepas log masuk

Mengelakkan Pengecam Tidak Peka Huruf

Apabila menggunakan PostgreSQL, adalah disyorkan untuk mengelakkan pengecam kes bercampur yang tidak disebut, seperti valueA. Sebaliknya, gunakan pengecam huruf kecil untuk mengelakkan kemungkinan ralat dan kekeliruan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengira Peratusan Dengan Cekap Menggunakan SUM() dalam Pertanyaan PostgreSQL Tunggal?. 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