Mengumpulkan Baris dalam SQL Menggunakan SUM() untuk Nilai Berbeza
Dalam pertanyaan MySQL anda, anda ingin mengira jumlah nilai dalam jadual penukaran sambil memastikan setiap baris dikira sekali sahaja. Untuk mencapai matlamat ini, anda menggunakan kata kunci DISTINCT bersama-sama dengan fungsi SUM(). Walau bagaimanapun, anda menghadapi masalah apabila baris pendua menaikkan hasil SUM().
Untuk menyelesaikan isu ini, pertimbangkan perhubungan utama utama dalam jadual anda. Jika conversions.id ialah kunci utama jadual penukaran dan stats.id ialah kunci utama jadual statistik, maka setiap conversions.id adalah unik kepada satu links.id.
Berdasarkan pemahaman ini, anda boleh menyusun semula pertanyaan anda untuk mengira jumlah conversions.value bagi setiap conversions.id yang berbeza, dan kemudian membahagikan hasilnya dengan jumlah kiraan baris dalam setiap kumpulan links.id. Ini akan memberikan anda jumlah nilai berbeza yang dikehendaki.
Berikut ialah pertanyaan yang disemak:
<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>
Pertanyaan ini sepatutnya mengira jumlah penukaran.nilai bagi setiap conversions.id yang berbeza dengan berkesan dalam setiap kumpulan links.id, memastikan setiap baris dikira sekali sahaja.
Atas ialah kandungan terperinci Bagaimana Untuk Mengira Jumlah Nilai dalam SQL Sambil Memastikan Setiap Baris Dikira Sekali Sahaja?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!