Diese Funktion ist nur in Analytics 360 verfügbar, einem Bestandteil der Google Marketing Platform. Weitere Informationen zur Google Marketing Platform |
Dieser Artikel enthält Beispiele zur Erstellung von Abfragen der Analytics-Daten, die Sie in BigQuery exportieren. Darüber hinaus stellen wir Ihnen ein Beispiel-Dataset zur Verfügung, damit Sie die in diesem Artikel behandelten Abfragen üben können.
Themen in diesem Artikel- Abfrageoptimierung
- Tipps und Best Practices
- Einfache Abfragebeispiele
- Summe [Messwert] pro [Dimension]
- Durchschnittliche Absprungrate pro [Dimension]
- Durchschnittliche Anzahl der Produktseitenaufrufe (Käufer und Nicht-Käufer)
- Durchschnittliche Anzahl der Transaktionen pro Käufer
- Durchschnittlicher ausgegebener Geldbetrag pro Sitzung
- Trefferreihenfolge
- Mehrere benutzerdefinierte Dimensionen auf Treffer- oder Sitzungsebene
- Erweiterte Abfragebeispiele
- Produkte, die von Kunden gekauft wurden, die bereits Produkt A gekauft haben (klassischer E-Commerce)
- Produkte, die von Kunden gekauft wurden, die bereits Produkt A gekauft haben (erweiterter E-Commerce)
- Durchschnittliche Anzahl der Nutzerinteraktionen vor dem Kauf
- Prozentsatz des verkauften Lagerbestands pro Produkt
- Gewinn der einzelnen Produkte
- Nettogewinn der einzelnen Produkte
Abfrageoptimierung
Jede Abfrage, die Sie ausführen, wird auf Ihr monatliches Kontingent zur Datenverarbeitung angerechnet. Das heißt, wenn Sie irrelevante Felder auswählen, steigt die zu verarbeitende Datenmenge, und Sie verbrauchen mehr Kontingent als nötig. Mit optimierten Abfragen können Sie Ihr monatliches Kontingent effizient nutzen.
Weitere Informationen zu Preisen
Nur erforderliche Felder auswählen
Wenn Sie eine Abfrage erstellen, wählen Sie die relevanten Felder innerhalb der SELECT-Anweisung aus. Wenn Sie keine irrelevanten Felder aufrufen, reduzieren Sie die Datenmenge und damit die für die Verarbeitung der Abfrage benötigte Zeit.
Beispiel: Vermeiden Sie es, den Platzhalteroperator zu verwenden.
Ungünstig: mit Platzhalteroperator |
---|
SELECT * |
Besser: mit Feldnamen, um die Verarbeitung nicht benötigter Daten zu vermeiden |
---|
SELECT field1, field2 |
Caching ermöglichen
Vermeiden Sie möglichst die Verwendung von Funktionen als Felder. Funktionen wie NOW()
oder TODAY()
geben variable Ergebnisse zurück, die eine Zwischenspeicherung der Abfragen verhindern, sodass die Verarbeitung länger dauert. Verwenden Sie stattdessen konkrete Uhrzeit- und Datumsangaben.
Zwischentabellen für häufig verwendete Unterabfragen verwenden
Abfragen, die Sie wiederholt als Unterabfragen verwenden, können Sie als Zwischentabelle speichern, indem Sie über den Abfrageergebnissen auf Als Tabelle speichern klicken. Verweisen Sie anschließend im Abschnitt FROM
der Abfrage auf diese Tabelle. Dadurch reduzieren Sie sowohl die zu verarbeitende Datenmenge als auch die Verarbeitungszeit.
Beispiel mit Zwischentabelle |
---|
SELECT field1, field2 |
Fehlerbehebung bei Abfragen
In BigQuery werden Fehler während der Codeerstellung behoben. Sie können die Fehlerbehebung in dem Fenster, in dem Sie die Abfrage erstellen, direkt unter der Abfrage verfolgen. Die Fehlerbehebung ist auch über die API mit der dryRun-Markierung verfügbar.
Gültige Abfragen sind grün markiert. Klicken Sie auf die Markierung, um die mit der Abfrage verarbeitete Datenmenge aufzurufen. Diese Funktion bietet Ihnen die Möglichkeit, Ihre Daten zu optimieren, bevor Sie die Abfrage tatsächlich ausführen, um unnötige Datenverarbeitung zu vermeiden.
Ungültige Abfragen sind rot markiert. Wenn Sie auf die Markierung klicken, werden Informationen zum Fehler angezeigt, einschließlich der betroffenen Zeile und Spalte. Im unten aufgeführten Beispiel ist die GROUP BY-Anweisung leer und der Fehler ist genau angegeben.
Tipps und Best Practices
Beispiel-Dataset verwenden
In den folgenden Szenarien wird das Beispiel-Dataset für Google Analytics verwendet.
Wenn Sie die Abfragen mit eigenen Daten verwenden möchten, müssen Sie lediglich die Projekt- und Dataset-Namen in den Beispielen durch eigene Projekt- und Dataset-Namen ersetzen.
Standard SQL verwenden
In BigQuery werden zwei SQL-Dialekte unterstützt:
Im Artikel Zu Google-Standard-SQL migrieren werden die Unterschiede zwischen den beiden Dialekten erläutert.
Standard-SQL ist jetzt der bevorzugte SQL-Dialekt für die Abfrage von in BigQuery gespeicherten Daten.
In diesem Artikel finden Sie Informationen dazu, wie Standard-SQL in der BigQuery-Benutzeroberfläche, einer Kommandozeile, einer API oder einer beliebig anderen Schnittstelle, die Sie verwenden, aktiviert wird.
Die einfachste Methode besteht darin, den Kommentar „standardSQL“ am Anfang von Standard-SQL-Abfragen einzufügen. Sie sehen das in den folgenden Beispielen.
Bei Legacy-SQL werden Google Analytics 360-Daten täglich in einer neuen Tabelle erfasst. Wenn Sie mehrere Tabellen gleichzeitig abfragen möchten, können Sie die Tabellennamen durch Kommas voneinander trennen, den Tabellenplatzhalter TABLE_DATE_RANGE
nutzen oder mehrere kommagetrennte TABLE_DATE_RANGE
-Funktionen verwenden. Im Folgenden finden Sie Beispiele hierzu.
Mehrere Tabellen abfragen
In den folgenden Beispielen sehen Sie Standard-SQL- und Legacy-SQL-Abfragen für dieselben Daten.
3 Tage
Standard-SQL
3 Tage mit UNION ALL |
---|
#standardSQL |
Legacy-SQL
3 Tage mit kommagetrennten Tabellennamen |
---|
SELECT |
Letzte 1.095 Tage
Standard-SQL
Letzte 1.095 Tage mithilfe von _TABLE_SUFFIX |
---|
#standardSQL |
Legacy-SQL
Letzte 1.095 Tage mithilfe von TABLE_DATE_RANGE |
---|
SELECT |
Letzte 36 Monate
Standard-SQL
Letzte 36 Monate mithilfe von _TABLE_SUFFIX |
---|
#standardSQL |
Legacy-SQL
Letzte 36 Monate mithilfe von TABLE_DATE_RANGE |
---|
SELECT |
Letzte 3 Jahre
Standard-SQL
Letzte 3 Jahre mithilfe von _TABLE_SUFFIX |
---|
#standardSQL |
Legacy-SQL
Letzte 3 Jahre mithilfe von TABLE_DATE_RANGE |
---|
SELECT |
Bestimmter Zeitraum
Standard-SQL
Bestimmter Zeitraum mithilfe von _TABLE_SUFFIX |
---|
#standardSQL |
Legacy-SQL
Bestimmter Zeitraum mithilfe von TABLE_DATE_RANGE |
---|
SELECT |
Letzte 3 Jahre sowie Daten für „Heute“ (Tagesverlauf)
Standard-SQL
Letzte 3 Jahre sowie Daten für „Heute“ (Tagesverlauf) mithilfe von UNION ALL und _TABLE_SUFFIX |
---|
Hinweis: Dieses Beispiel funktioniert nicht mit dem öffentlichen Google Analytics-Dataset, weil es derzeit keine Tabelle mit Tagesverlaufsdaten umfasst. |
#standardSQL |
Legacy-SQL
Letzte 3 Jahre sowie Daten für „Heute“ (Tagesverlauf) mithilfe mehrerer TABLE_DATE_RANGE-Funktionen |
---|
Hinweis: Dieses Beispiel funktioniert nicht mit dem öffentlichen Google Analytics-Dataset, weil es derzeit keine Tabelle mit Tagesverlaufsdaten umfasst. |
SELECT |
Einfache Abfragebeispiele
In diesem Abschnitt wird erläutert, wie Sie einfache Abfragen mit Messwerten und Dimensionen aus Analytics-Daten erstellen.
Summe [Messwert] pro [Dimension]
Es folgen Beispielskripts für die Frage: Wie viele Transaktionen wurden im Juli 2017 pro Browser generiert?
Standard-SQL
Anzahl der Transaktionen pro Browser insgesamt im Juli 2017 |
---|
#standardSQL |
Legacy-SQL
Anzahl der Transaktionen pro Browser insgesamt im Juli 2017 |
---|
SELECT |
Durchschnittliche Absprungrate pro [Dimension]
Die tatsächliche Absprungrate ist definiert als die Anzahl der Besuche mit einem einzigen Seitenaufruf in Prozent. Es folgen Beispielskripts für die Frage: Wie hoch war die Absprungrate pro Besucherquelle?
Standard-SQL
Absprungrate pro Besucherquelle im Juli 2017 |
---|
#standardSQL |
Legacy-SQL
Absprungrate pro Besucherquelle im Juli 2017 |
---|
SELECT |
Durchschnittliche Anzahl der Produktseitenaufrufe (Käufer und Nicht-Käufer)
Es folgen Beispielskripts für die Frage: Wie oft haben Nutzer, die im Juli 2017 etwas kauften, die Produktseiten durchschnittlich aufgerufen?
Standard-SQL
Durchschnittliche Anzahl der Produktseitenaufrufe durch Nutzer, die im Juli 2017 etwas kauften |
---|
#standardSQL |
Legacy-SQL
Durchschnittliche Anzahl der Produktseitenaufrufe durch Nutzer, die im Juli 2017 etwas kauften |
---|
SELECT |
Es folgen Beispielskripts für die Frage: Wie oft haben Nutzer, die im Juli 2017 nichts kauften, die Produktseiten durchschnittlich aufgerufen?
Standard-SQL
Durchschnittliche Anzahl der Produktseitenaufrufe durch Nutzer, die im Juli 2017 nichts kauften |
---|
#standardSQL |
Legacy-SQL
Durchschnittliche Anzahl der Produktseitenaufrufe durch Nutzer, die im Juli 2017 nichts kauften |
---|
SELECT |
Durchschnittliche Anzahl der Transaktionen pro Käufer
Es folgen Beispielskripts für die Frage: Was war die durchschnittliche Anzahl der Transaktionen pro Nutzer, die im Juli 2017 etwas gekauft haben?
Standard-SQL
Durchschnittliche Anzahl der Transaktionen pro Nutzer, die im Juli 2017 etwas gekauft haben |
---|
#standardSQL |
Legacy-SQL
Durchschnittliche Anzahl der Transaktionen pro Nutzer, die im Juli 2017 etwas gekauft haben |
---|
SELECT |
Durchschnittlicher ausgegebener Geldbetrag pro Sitzung
Es folgen Beispielskripts für die Frage: Welcher Geldbetrag wurde im Juli 2017 pro Sitzung durchschnittlich ausgegeben?
Standard-SQL
Durchschnittlich ausgegebener Geldbetrag pro Sitzung im Juli 2017 |
---|
#standardSQL |
Legacy-SQL
Durchschnittlich ausgegebener Geldbetrag pro Sitzung im Juli 2017 |
---|
SELECT |
Trefferreihenfolge
Es folgen Beispielskripts für die Frage: In welcher Reihenfolge wurden Seiten aufgerufen?
Standard-SQL
Reihenfolge der von Nutzern im Juli 2017 aufgerufenen Seiten |
---|
#standardSQL |
Legacy-SQL
Reihenfolge der von Nutzern im Juli 2017 aufgerufenen Seiten |
---|
SELECT |
In dieser Abfrage wurden die Treffer auf den Typ PAGES
beschränkt, weil Ereignis- oder Transaktionsinteraktionen in diesem Fall nicht ausgegeben werden sollen. Jede Zeile der Ausgabe entspricht einem Seitenaufruf. Die Reihenfolge entspricht der Standardreihenfolge der Felder in der SELECT
-Anweisung.
Mehrere benutzerdefinierte Dimensionen auf Treffer- oder Sitzungsebene
Benutzerdefinierte Dimension auf Trefferebene |
---|
SELECT fullVisitorId, visitId, hits.hitNumber, hits.time, |
Benutzerdefinierte Dimension auf Sitzungsebene |
---|
SELECT fullVisitorId, visitId, |
In jeder Abfrage:
Mit der SELECT
-Anweisung werden die relevanten Felder für Dimensionen und Messwerte abgerufen.
MAX
-Funktion:
- Gibt die benutzerdefinierte Dimension als neue Spalte zurück. Sie können diese Funktion wiederholt aufrufen, um mehrere benutzerdefinierte Dimensionen als neue Spalten zurückzugeben.
- Mit
WITHIN hits
undWITHIN RECORD
wird in BigQuery die Bedingung in wiederholten Feldern ausgewertet. - Die Bedingung in
MAX
wird für jede benutzerdefinierte Dimension ausgewertet. Für alle Dimensionen, die nichtindex=1 (hits)
oderindex=2 (sessions)
entsprechen, wirdNULL
zurückgegeben. - Gibt den maximalen Wert zurück (benutzerdefinierte Dimension 1 für Treffer bzw. benutzerdefinierte Dimension 2 für Sitzungen). Alle anderen Werte sind
NULL
.
Erweiterte Abfragebeispiele
Wenn Sie mit einfachen Abfragen vertraut sind, können Sie sich den Abfragen zuwenden, die Sie mit den erweiterten Funktionen und Elementen in BigQuery erstellen können.
Produkte, die von Kunden gekauft wurden, die bereits Produkt A gekauft haben (klassischer E-Commerce)
Das folgende Skript ist ein grundlegendes Skript für die Frage: Welche anderen Produkte wurden von Kunden gekauft, die Produkt A gekauft haben?
Produkte, die von einem Kunden gekauft wurden, der bereits Produkt A gekauft hat (klassischer E-Commerce) |
---|
SELECT hits.item.productName AS other_purchased_products, COUNT(hits.item.productName) AS quantity |
- In der ersten Zeile werden alle anderen Produkte erfasst, die ein Nutzer gekauft hat, und mit der
COUNT()
-Funktion gezählt. Das Ergebnis wird in einem Feld mit der Bezeichnungquantity
ausgegeben. Der zugehörige Artikel wird im Produktfeld mit der Bezeichnungother_purchased_products
ausgegeben. - In der grauen Unterabfrage wählen Sie nur die eindeutigen Nutzer (
fullVisitorId
) aus, die Transaktionen abgeschlossen haben (totals.transactions>=1
) und die in einer Transaktion Produkt A gekauft haben (WHERE hits.item.productName CONTAINS 'Product Item Name A'
).
Mit den Regeln (WHERE
- und AND
-Anweisungen) in der übergeordneten (grünen) Abfrage werden die Werte in hits.item.productName
verworfen, die Null sind und Produkt A enthalten.
Es folgt ein Beispiel für die Abfrage: Welche anderen Produkte haben Kunden gekauft, die Lackmarker im 4er-Set gekauft haben?
Von einem Kunden gekaufte Produkte, der am 24. Juni 2013 Lackmarker im 4er-Set gekauft hat |
---|
SELECT hits.item.productName AS other_purchased_products, COUNT(hits.item.productName) AS quantity |
In Dremel/BigQuery wird mit WHERE expr IN
ein JOIN ausgelöst und es gelten Größenbeschränkungen. Insbesondere die Größe der rechten Seite des JOIN (in diesem Fall die Anzahl der Besucher) darf 8 MB nicht überschreiten. In Dremel wird das als broadcast JOIN bezeichnet. Wenn die Größe 8 MB überschreitet, müssen Sie einen shuffled JOIN auslösen. Hierzu können Sie die JOIN EACH-Syntax verwenden. Die Abfrage kann mit IN nicht ausgeführt werden. Sie kann jedoch mit einemJOIN neu geschrieben werden.
Produkte, die von Kunden gekauft wurden, die bereits Produkt A gekauft haben (erweiterter E-Commerce)
Diese Abfrage ähnelt der oben dargestellten grundlegenden Abfrage, ist aber für den erweiterten E-Commerce geeignet. Auch bei ihr werden mithilfe von TABLE_DATE_RANGE
Daten über mehrere Tage abgerufen.
Produkte, die von einem Kunden gekauft wurden, der bereits Produkt A gekauft hat (erweiterter E-Commerce) |
---|
SELECT hits.product.productSKU AS other_purchased_products, COUNT(hits.product.productSKU) AS quantity |
Durchschnittliche Anzahl der Nutzerinteraktionen vor dem Kauf
Das ist ein Beispiel für eine Abfrage mit dem Befehl JOIN() [...] ON
, die ausschließlich von Analytics-Daten abhängig ist.
Das folgende Skript ist ein grundlegendes Skript für die Frage: Wie hoch ist die durchschnittliche Anzahl der Nutzerinteraktionen vor einem Kauf?
Anzahl der Nutzerinteraktionen vor einem Kauf |
---|
SELECT one.hits.item.productSku AS ProductSku, ( sum_of_hit_number / total_hits ) AS avg_hit_number |
- Die erste Zeile enthält die mathematische Hauptoperation zur Berechnung der durchschnittlichen Anzahl von Nutzerinteraktionen pro Produkt. Mit dieser Abfrage wird ein JOIN zwischen den zwei Unterabfragen Alias_Name_1 und Alias_Name_2 erstellt.
- Mithilfe von Alias_Name_1 wird ein Feld erstellt, in dem mit der Summenfunktion
SUM()
alle Trefferzahlen für ein Produkt summiert werden. - Mit Alias_Name_2 wird die Trefferanzahl pro Nutzer und Produkt ermittelt. Hierfür wird die
COUNT()
-Funktion verwendet. - Die letzte Zeile enthält das Feld, das die beiden Datensätze des JOIN gemeinsam haben (
hits.item.productSku
).
Es folgt ein Beispiel für die Abfrage: Was ist die durchschnittliche Anzahl der Nutzerinteraktionen vor einem Kauf am 10. September 2013?
Anzahl der Nutzerinteraktionen vor einem Kauf am 10. September 2013 |
---|
SELECT one.hits.item.productSku AS ProductSku, ( sum_of_hit_number / total_hits ) AS avg_hit_number |
Prozentsatz des verkauften Lagerbestands pro Produkt
Dies ist ein Beispiel für eine Abfrage, bei der neben Analytics-Daten auch andere Daten berücksichtigt werden. Wenn Sie beide Datasets miteinander kombinieren, erhalten Sie detailliertere Informationen zum Nutzerverhalten. Sie können Daten, die nicht aus Analytics stammen, in BigQuery importieren. Dies wirkt sich allerdings auf Ihre monatliche Gebühr zur Datenspeicherung aus.
Das folgende Skript ist ein grundlegendes Skript für die Frage: Wie viel Prozent des Lagerbestands wurden bei den jeweiligen Produkten verkauft?
Prozentsatz des verkauften Lagerbestands pro Produkt |
---|
SELECT AnalyticsImport.product_data_20130728.productId, ((( one.quantity_sold ) / ( AnalyticsImport.product_data_20130728.productstock + one.quantity_sold )) * 100 ) AS percentage_of_stock_sold |
- Die Ausgabe der ersten Zeile sind zwei Felder: ein Feld mit allen Produkt-IDs und eines mit einer mathematischen Operation, mit denen der vom Lager verkaufte Prozentsatz der einzelnen Produkte berechnet wird.
- Da bei dieser Abfrage zwei Datasets berücksichtigt werden, müssen Sie die Funktion
JOIN() ... ON
verwenden. Dieser Befehl verbindet die Zeilen aus den beiden Datensätzen basierend auf dem gemeinsamen Feld. Die beiden Datasets sind in diesem Fall[ ‘Imported_DataSet’ ]
und'Alias_Name'
. [ ‘Imported_DataSet’ ]
bezieht sich auf Daten, die nicht aus Analytics stammen. Das ist das Dataset, das das Messwertfeld mit dem Restbestand (Imported DataSet.'stock_left_field'
) sowie das Dimensionsfeld mit der Produkt-ID (Imported_DataSet.'productId_field'
) enthält.‘Alias_Name’
ist der Name, der den von der grau formatierten Unterabfrage zurückgegebenen Daten zugewiesen wird. Mit dieser Unterabfrage wird anhand von Analytics-Daten ermittelt, wie viel pro Produkt verkauft wurde.- In der letzten Zeile wird mit der
ON
-Anweisung das gemeinsame Feld angegeben, über das die beiden Datasets verbunden werden.
Bei vielen Variablen in dieser Abfrage ist der Name des Datasets als Präfix vorangestellt, z. B. Imported_DataSet.’productId_field’, Alias_Name.quantity_sold
. Dadurch machen Sie deutlich, welches Feld Sie auswählen und zu welchem Dataset es gehört.
Es folgt ein Beispiel für die Abfrage: Wie viel (in Prozent) wurde pro Produkt am 28. Juli 2013 verkauft?
Prozentsatz des verkauften Lagerbestands pro Produkt am 28. Juli 2013 |
---|
SELECT AnalyticsImport.product_data_20130728.productId, ( ( ( one.quantity_sold ) / ( AnalyticsImport.product_data_20130728.productstock + one.quantity_sold ) ) * 100 ) AS percentage_of_stock_sold |
Gewinn der einzelnen Produkte
Das folgende Skript ist ein grundlegendes Skript für die Frage: Wie rentabel sind die einzelnen Produkte?
Gewinn pro Produkt |
---|
SELECT Alias_Name.hits.item.productSku, ( Imported_DataSet.’product profit field’ * Alias_Name.quantity ) AS profit |
- Die erste Zeile enthält die mathematische Operation zur Berechnung des Gesamtgewinns je Produkt.
- Für die graue Unterabfrage werden Daten verwendet, die nicht aus Analytics stammen. Hiermit wird ermittelt, wie hoch der Gewinn beim Verkauf eines Produkts ist.
- Die rote Unterabfrage basiert auf Analytics-Daten, die mit den Daten, die nicht aus Analytics stammen, verbunden werden. Hiermit wird die je Produkt verkaufte Stückzahl ermittelt.
- In der letzten Zeile wird das gemeinsame Feld der beiden Datasets per
ON
-Anweisung angegeben. In diesem Fall ist dies die Produkt-ID.
Es folgt ein Beispiel für die Abfrage: Wie hoch war der Gewinn der einzelnen Produkte am 28. Juli 2013?
Gewinn pro Produkt am 28. Juli 2013 |
---|
SELECT two.hits.item.productSku, ((AnalyticsImport.product_data_20130728.productprice-AnalyticsImport.product_data_20130728.productcost)*two.quantity) AS profit |
Der Gewinn entspricht der Differenz zwischen dem Verkaufspreis und den Produktionskosten. Diese Informationen werden in dem Datensatz gespeichert, der nicht aus Google Analytics stammt.
Nettogewinn der einzelnen Produkte
Das folgende Skript ist ein grundlegendes Skript für die Frage: Wie hoch ist der Nettogewinn der einzelnen Produkte?
Nettogewinn pro Produkt |
---|
SELECT Alias_Name.hits.item.productSku, (gross_profit-total_refund_revenue) AS real_profit |
- Diese Abfrage ähnelt der folgenden: Wie rentabel sind die einzelnen Produkte? Die einzigen Unterschiede befinden sich im Datensatz in der grauen Unterabfrage, der nicht aus Analytics stammt, und in der mathematischen Operation zur Berechnung des Nettogewinns in der ersten Zeile.
- Im Dataset, das nicht aus Analytics stammt, wird auch der Gesamtbetrag der Erstattungen berechnet (in der
SELECT
-Anweisung der roten Unterabfrage). - In Zeile 1 wird dann der Nettogewinn berechnet. Hierzu wird vom Bruttogewinn der Betrag für Erstattungen abgezogen.
Weitere Informationen zu dieser Abfrage finden Sie im Abschnitt zur Abfrage Wie rentabel sind die einzelnen Produkte?
Es folgt ein Beispiel für die Abfrage: Wie hoch war der Nettogewinn der einzelnen Produkte am 28. Juli 2013?
Nettogewinn pro Produkt am 28. Juli 2013 |
---|
SELECT two.hits.item.productSku, (gross_profit-total_refund_revenue) AS real_profit |
Der Nettogewinn ergibt sich aus dem Gewinn eines Produkts abzüglich des für Erstattungen ausgegebenen Betrags. So berechnen Sie den gesamten Rückbuchungsbetrag für ein Produkt:
Rückbuchungsbetrag für ein Produkt = (Produktpreis + Rückbuchungskosten für das Produkt) * Menge der Produkte mit Rückbuchungen