Heim > Datenbank > MySQL-Tutorial > Wie berechnet man SUM() für unterschiedliche Zeilen in MySQL?

Wie berechnet man SUM() für unterschiedliche Zeilen in MySQL?

DDD
Freigeben: 2024-11-04 15:32:02
Original
430 Leute haben es durchsucht

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

SUM() für eindeutige Zeilen in MySQL

Bei der Verwendung der SUM()-Aggregationsfunktion in einer MySQL-Abfrage ist es wichtig zu überlegen, wie Um genaue Berechnungen zu gewährleisten, werden einzelne Zeilen gezählt. Im bereitgestellten Beispiel besteht das Ziel darin, verschiedene Conversions zu zählen und ihre Werte zu summieren.

In der ursprünglichen Abfrage zählt die Funktion SUM(conversions.value) den Wert für jede Zeile aufgrund der aktivierten Option „GROUP BY“ mehrmals links.id. Um dieses Problem zu lösen, müssen wir „conversions.value“ nur für unterschiedliche „conversions.id“ summieren.

Eine sorgfältige Analyse zeigt, dass sowohl „conversions.id“ als auch „stats.id“ Primärschlüssel sind. Daher können wir davon ausgehen, dass es für jede Conversions.id eine eindeutige links.id gibt.

Um das gewünschte Ergebnis zu erzielen, können wir das kartesische Produkt zweier Sätze nutzen, die Klicks und Conversions darstellen. Die Anzahl der eindeutigen Conversions kann mithilfe von count(distinct Conversions.id) abgeleitet werden.

Die Summe der Conversion-Werte kann korrigiert werden, indem sie mit der Anzahl der eindeutigen Conversions dividiert durch die Gesamtzahl multipliziert wird: sum(conversions. value)count(distinct Conversions.id)/count()

Die Einbeziehung dieser Änderung ergibt die folgende überarbeitete Abfrage:

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;
Nach dem Login kopieren

Diese verfeinerte Abfrage eliminiert effektiv doppelte Zeilen bei der Berechnung des Conversion-Werts, um eine genaue Summe für verschiedene Conversions sicherzustellen.

Das obige ist der detaillierte Inhalt vonWie berechnet man SUM() für unterschiedliche Zeilen in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage