Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Mengira Peratusan dengan Cekap daripada COUNT() dalam Pernyataan SELECT SQL Tunggal?

Bagaimanakah Saya Boleh Mengira Peratusan dengan Cekap daripada COUNT() dalam Pernyataan SELECT SQL Tunggal?

Barbara Streisand
Lepaskan: 2025-01-03 20:15:40
asal
341 orang telah melayarinya

How Can I Efficiently Calculate Percentages from a COUNT() in a Single SQL SELECT Statement?

Mengira Peratusan daripada SUM() dalam Pernyataan SELECT Sama dalam SQL

Dalam konteks jadual my_obj dengan medan integer value_a dan value_b , adalah mungkin untuk mengira peratusan baris di mana nilai_a sama dengan nilai_b. Pertanyaan awal cuba mencapai ini menggunakan prosedur tersimpan, tetapi menghadapi ralat.

Penyelesaian Ringkas dan Lebih Cekap

Pendekatan yang lebih mudah dan pantas adalah seperti 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:

  • Mengira pengangka daripada peratusan dengan mengira bilangan baris di mana nilai_a bersamaan dengan nilai_b menggunakan kiraan ungkapan(nilai_a = nilai_b ATAU NULL). OR NULL memastikan bahawa nilai NULL dianggap sebagai FALSE dalam perbandingan kesamaan.
  • Mengira penyebut peratusan menggunakan count(*), yang mengira semua baris, termasuk yang mempunyai nilai NULL.
  • Membahagikan pengangka dengan penyebut untuk mendapatkan peratusan dan memberikannya kepada alias pct.

Mengendalikan Nilai NULL

Penyelesaian ini mengendalikan nilai NULL dengan sewajarnya, tidak seperti pertanyaan asal yang boleh membawa kepada hasil yang salah atau ralat pembahagian demi sifar .

Memelihara Perpuluhan Digit

Untuk mengekalkan digit perpuluhan dalam hasil, ubah suai pertanyaan seperti berikut:

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

Pengubahan ini mendarabkan pengangka dengan 100.0 untuk memaksa ketepatan angka dan kemudian menggunakan bulat() untuk menentukan bilangan digit perpuluhan dipelihara.

Kesimpulan

Dengan menggunakan pertanyaan yang dipermudahkan atau pertanyaan yang diubah suai dengan pemeliharaan perpuluhan, seseorang boleh mengira peratusan daripada SUM() dengan berkesan dalam pernyataan SELECT yang sama, pengendalian nilai NULL dengan sewajarnya.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengira Peratusan dengan Cekap daripada COUNT() dalam Pernyataan SELECT SQL 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