Gruppieren von Zeilen in SQL mit SUM() für eindeutige Werte
In Ihrer MySQL-Abfrage möchten Sie die Summe eines Werts berechnen die Konvertierungstabelle und stellt dabei sicher, 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:
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;
Diese Abfrage sollte effektiv die Summe von „conversions.value“ für jede einzelne „conversions.id“ innerhalb jeder „links.id“-Gruppe berechnen und sicherstellen, dass jede Zeile nur einmal gezählt wird.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3