Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengira SUM() untuk Baris Berbeza dalam MySQL?

Bagaimana untuk Mengira SUM() untuk Baris Berbeza dalam MySQL?

DDD
DDDasal
2024-11-04 15:32:02427semak imbas

How to Calculate SUM() for Distinct Rows in MySQL?

SUM() untuk Distinct Rows dalam MySQL

Apabila menggunakan fungsi pengagregatan SUM() dalam pertanyaan MySQL, adalah penting untuk mempertimbangkan bagaimana baris yang berbeza dikira untuk memastikan pengiraan yang tepat. Dalam contoh yang diberikan, matlamatnya ialah untuk mengira penukaran yang berbeza dan menjumlahkan nilainya.

Dalam pertanyaan asal, fungsi SUM(conversions.value) mengira nilai untuk setiap baris berbilang kali disebabkan oleh GROUP BY pada pautan.id. Untuk menyelesaikan masalah ini, kita perlu menjumlahkan conversions.value hanya untuk conversions.id yang berbeza.

Analisis yang teliti mendedahkan bahawa kedua-dua conversions.id dan stats.id adalah kunci utama. Oleh itu, kita boleh mengandaikan bahawa bagi setiap conversions.id, terdapat pautan.id yang unik.

Untuk mendapatkan hasil yang diingini, kita boleh memanfaatkan produk Cartesian bagi dua set yang mewakili klik dan penukaran. Bilangan penukaran unik boleh diperoleh menggunakan count(distinct conversions.id).

Jumlah nilai penukaran boleh dibetulkan dengan mendarabkannya dengan bilangan penukaran unik dibahagikan dengan jumlah kiraan: sum(penukaran. value)count(distinct conversions.id)/count()

Menggabungkan pengubahsuaian ini menghasilkan pertanyaan semakan berikut:

SELECT links.id, 
   count(DISTINCT stats.id) as clicks, 
   count(DISTINCT conversions.id) as conversions, 
   sum(conversions.value)*count(DISTINCT conversions.id)/count(*) as conversion_value 
FROM links 
LEFT OUTER JOIN stats ON links.id = stats.parent_id 
LEFT OUTER JOIN conversions ON links.id = conversions.link_id 
GROUP BY links.id 
ORDER BY links.created desc;

Pertanyaan yang diperhalusi ini secara berkesan menghapuskan baris pendua dalam pengiraan conversion_value, memastikan jumlah yang tepat untuk penukaran yang berbeza.

Atas ialah kandungan terperinci Bagaimana untuk Mengira SUM() untuk Baris Berbeza dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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