Heim > Datenbank > MySQL-Tutorial > Wie berechnet man die Summe einer Spalte für eindeutige Zeilen in einer gruppierten SQL-Abfrage?

Wie berechnet man die Summe einer Spalte für eindeutige Zeilen in einer gruppierten SQL-Abfrage?

Barbara Streisand
Freigeben: 2024-11-03 19:07:29
Original
580 Leute haben es durchsucht

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

MYSQL: Verwendung von sum() für eindeutige Zeilen

In SQL-Abfragen wird die Funktion sum() normalerweise verwendet, um die Summe von zu berechnen Werte über mehrere Zeilen hinweg. Bei der Arbeit mit gruppierten Daten ist es jedoch wichtig, doppelte Zeilen zu berücksichtigen. Bei dieser speziellen Frage möchte der Benutzer die Summe einer Spalte „conversions.value“ für jede einzelne Zeile in der Conversions-Tabelle berechnen.

Die bereitgestellte Abfrage stößt zunächst auf ein Problem, bei dem „sum(conversions.value)“ falsch zählt Aufgrund der GROUP BY-Klausel wird der Wert für jede Zeile mehrmals angegeben. Um dieses Problem zu beheben, muss der Benutzer sicherstellen, dass die Summe nur für eindeutige Zeilen berechnet wird.

Die Lösung liegt in der Verwendung des Konzepts eines kartesischen Produkts, das Elemente mehrerer Mengen kombiniert. In diesem Fall handelt es sich bei den Sets um die eindeutigen Klick- und Conversion-Ereignisse. Die Funktion count(DISTINCT Conversions.id) entfernt effektiv doppelte Conversion-Zeilen und liefert die Anzahl eindeutiger Conversion-Ereignisse.

Um die korrekte Summe zu berechnen, kann der Benutzer sum(conversions.value) mit der Anzahl eindeutiger Conversions multiplizieren Konvertierungen und dividieren Sie sie durch die Gesamtzahl der Zeilen (count(*)). Dieser Vorgang stellt sicher, dass die Summe nur für eindeutige Konvertierungsereignisse berechnet wird, die jedem Link zugeordnet sind.

Die in der Lösung empfohlene geänderte Abfrage lautet:

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

Das obige ist der detaillierte Inhalt vonWie berechnet man die Summe einer Spalte für eindeutige Zeilen in einer gruppierten SQL-Abfrage?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage