Liebe/-r Experte/-in,
ich habe folgende Abfrage:
SELECT name, COUNT(*) as Anzahl_Kaeufe, SUM(verkauf) as Umsatz FROM verkauf
GROUP BY name WITH ROLLUP;
Ich möchte gern in dieser Abfrage den Anteil der Anzahl_Kaeufe an der Gesamtanzahl der Kaeufe ausrechnen.
Ich kann mit der WITH ROLLUP-Funktion ja in der letzten Zeile die Summe sehen. Kann ich mich in den Detailzeilen auf diese Rollupsumme von Anzahl_Kaeufe beziehen. Bsp (funktioniert mit dieser Syntax natürlich nicht):
SELECT name, COUNT(*) as Anzahl_Kaeufe, SUM(verkauf) as Umsatz, COUNT(*)/ROLLUPSUM(COUNT(*)) as Anteil
FROM verkauf
GROUP BY name WITH ROLLUP;
Geht so etwas überhaupt?
Wenn nicht müßte ich das Ergebnisarray erst auswerten und dann pro Zeile diesen Wert berechnen.
Vielen Dank.
Sven Schulze
nach ein bischen probieren: nein geht so nicht meiner Meinung nach.
Sich auf das Rollup-Ergebnis beziehen geht nicht. Also tatsächlich erst Ergebnisarray berechnen oder so was und dann nochmal.
Alternativ wäre eine SubQuery für die Anzahl der Verkäufe, aber das wird langsam ohne Ende.
Zudem sollte man dann mal ein paar Musterdaten haben )
Hi vielen Dank für die Tests.
Ich habe es jetzt mit mehreren Loops durch das Ergebnisarray erfolgreich hingbekommen, ein Loop um die Gesamtergebnisse zu berechnen, ein zweiter um die Anteile zu berechnen und ein dritter um die Ergebnisse anzuzeigen (wird in Diagramm übertragen). Ich denke das ist sauberer und schneller als mit subqueries.
Wie sieht die tabelle aus,
was willst du berechnen (in worten beschrieben),
tut vielleicht count(*)/sum(spaltenname)
mehr infos -> bessere hilfe.
gruss Frank