Heim > Datenbank > MySQL-Tutorial > Hauptteil

Wie berechnet man die Summe eines Werts in SQL und stellt gleichzeitig sicher, dass jede Zeile nur einmal gezählt wird?

Barbara Streisand
Freigeben: 2024-11-08 05:56:02
Original
649 Leute haben es durchsucht

How To Calculate the Sum of a Value in SQL While Ensuring Each Row is Counted Only Once?

Gruppieren von Zeilen in SQL mit SUM() für eindeutige Werte

In Ihrer MySQL-Abfrage möchten Sie die Summe eines Werts in berechnen Dabei wird sichergestellt, dass jede Zeile nur einmal gezählt wird. Um dies zu erreichen, verwenden Sie das Schlüsselwort DISTINCT in Verbindung mit der Funktion SUM(). Sie stoßen jedoch auf ein Problem, bei dem doppelte Zeilen das SUM()-Ergebnis aufblähen.

Um dieses Problem zu beheben, berücksichtigen Sie die Primärschlüsselbeziehungen in Ihren Tabellen. Wenn „conversions.id“ der Primärschlüssel der Conversions-Tabelle und „stats.id“ der Primärschlüssel der Statistiktabelle ist, dann ist jede „conversions.id“ eindeutig für eine einzelne links.id.

Basierend auf diesem Verständnis, Sie können Ihre Abfrage umstrukturieren, um die Summe von „conversions.value“ für jede einzelne „conversions.id“ zu berechnen, und dann das Ergebnis durch die Gesamtzahl der Zeilen innerhalb jeder „links.id“-Gruppe dividieren. Dadurch erhalten Sie die gewünschte Summe unterschiedlicher Werte.

Hier ist die überarbeitete Abfrage:

<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

Diese Abfrage sollte effektiv die Summe von „conversions.value“ für jede einzelne „conversions.id“ darin berechnen jede links.id-Gruppe, um sicherzustellen, dass jede Zeile nur einmal gezählt wird.

Das obige ist der detaillierte Inhalt vonWie berechnet man die Summe eines Werts in SQL und stellt gleichzeitig sicher, dass jede Zeile nur einmal gezählt wird?. 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