Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mengira Jumlah Tepat Nilai Penukaran untuk Penukaran Berbeza dalam MySQL?

Bagaimana untuk Mengira Jumlah Tepat Nilai Penukaran untuk Penukaran Berbeza dalam MySQL?

DDD
Lepaskan: 2024-11-04 04:20:02
asal
187 orang telah melayarinya

How to Calculate Accurate Sum of Conversion Values for Distinct Conversions in MySQL?

Pengagregatan Baris tersendiri dalam MySQL dengan sum()

Pertanyaan SQL selalunya melibatkan fungsi agregat seperti sum() untuk mengira ringkasan berangka. Apabila berurusan dengan data terkumpul, adalah penting untuk mengira setiap rekod unik sekali sahaja untuk mengelakkan hasil yang melambung.

Pertimbangkan pertanyaan berikut:

<code class="sql">SELECT links.id,
       count(DISTINCT stats.id) as clicks,
       count(DISTINCT conversions.id) as conversions,
       sum(conversions.value) 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;</code>
Salin selepas log masuk

Matlamatnya adalah untuk mengira bilangan klik yang berbeza , penukaran dan jumlahkan nilai penukaran yang sepadan untuk setiap pautan. Walau bagaimanapun, pengagregatan jumlah(conversions.value) mengira setiap nilai penukaran beberapa kali disebabkan oleh pengumpulan.

Untuk mengira jumlah yang tepat bagi setiap penukaran unik, kami perlu melaraskan ungkapan. Dengan mengandaikan bahawa conversions.id ialah kunci utama dalam jadual penukaran, kami boleh memanfaatkan hubungan antara bilangan penukaran yang berbeza dan jumlah bilangan rekod.

Untuk setiap conversions.id, terdapat paling banyak satu pautan .id terjejas. Oleh itu, jumlah semua nilai penukaran untuk penukaran yang berbeza boleh dikira dengan mendarabkan jumlah sebenar(conversions.value) dengan bilangan penukaran yang berbeza dan membahagikannya dengan jumlah bilangan rekod dalam kumpulan:

<code class="sql">sum(conversions.value) * count(DISTINCT conversions.id) / count(*)</code>
Salin selepas log masuk

Menggabungkan pelarasan ini ke dalam pertanyaan menghasilkan:

<code class="sql">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;</code>
Salin selepas log masuk

Pertanyaan yang diubah suai ini secara berkesan menjumlahkan nilai penukaran untuk setiap penukaran unik, memberikan hasil agregat yang tepat untuk data terkumpul.

Atas ialah kandungan terperinci Bagaimana untuk Mengira Jumlah Tepat Nilai Penukaran untuk Penukaran Berbeza dalam MySQL?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan