Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mengira Jumlah Lajur untuk Baris Unik dalam Pertanyaan SQL Berkumpulan?

Bagaimana untuk Mengira Jumlah Lajur untuk Baris Unik dalam Pertanyaan SQL Berkumpulan?

Barbara Streisand
Lepaskan: 2024-11-03 19:07:29
asal
580 orang telah melayarinya

How to Calculate the Sum of a Column for Unique Rows in a Grouped SQL Query?

MYSQL: Menggunakan sum() untuk Baris Unik

Dalam pertanyaan SQL, fungsi sum() biasanya digunakan untuk mengira jumlah nilai merentas berbilang baris. Walau bagaimanapun, apabila bekerja dengan data terkumpul, adalah penting untuk mempertimbangkan baris pendua. Dalam soalan khusus ini, pengguna menyasarkan untuk mengira jumlah lajur conversions.value untuk setiap baris yang berbeza dalam jadual penukaran.

Pertanyaan yang diberikan pada mulanya menghadapi isu di mana jumlah(conversions.value) tersalah mengira nilai untuk setiap baris berbilang kali disebabkan oleh klausa GROUP BY. Untuk menangani perkara ini, pengguna mesti memastikan jumlah dikira hanya untuk baris unik.

Penyelesaian terletak pada penggunaan konsep produk Cartesian, yang menggabungkan elemen berbilang set. Dalam kes ini, set ialah peristiwa klik dan penukaran yang unik. Fungsi count(DISTINCT conversions.id) secara berkesan mengalih keluar baris penukaran pendua, memberikan kiraan peristiwa penukaran unik.

Untuk mengira jumlah yang betul, pengguna boleh mendarabkan jumlah(conversions.value) dengan kiraan berbeza penukaran dan bahagikannya dengan jumlah kiraan baris (count(*)). Operasi ini memastikan jumlah dikira hanya untuk peristiwa penukaran unik yang dikaitkan dengan setiap pautan.

Pertanyaan diubah suai yang disyorkan dalam penyelesaian ialah:

<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

Atas ialah kandungan terperinci Bagaimana untuk Mengira Jumlah Lajur untuk Baris Unik dalam Pertanyaan SQL Berkumpulan?. 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