-
Durschnitt via SQL
Hallo Kollegen,
ich habe folgendes Problem:
ich habe eine Datei in der alle unsere Rechnungen stehen, mit Rechnungsnr., Tour, Kundennr. usw.
In einer Tour sind mehrere Rechnungen eines Kunden und mehrere Kunden.
Ich möchte jetzt folgendes ermitteln.
Die durchschnittliche Anzahl von Aufträgen pro Tour eines Kunden, als Summe aller Kunden.
Ich bekomme immer nur die Anzahl der Touren oder Anzahl der Kunden oder die Anzahl der Rechnungen.
Gruß
Jenne
-
Hi,
SELECT Tour ,AVG(Aufträge) FROM Rechnungen
GROUP BY Kunde
So müsstest du schonmal die durchschnittliche Anzahl aller Aufträge mit Angabe der Tour haben gruppiert nach Kunden.
mfg
-
Hallo Eagle,
die Select-Anweisung mit AVG(Aufträge) funktioniert so nicht, da ich die Spalte Aufträge nicht habe.
Gruß
Jenne
-
Hier hilft nur die berühmte CTE (CommonTableExpression).
Beispiel:
wirh xCountAuf as (
select Kunde, Tour, count(distinct AuftrNum) as AuftrCount
from Rechnungen
group by Kunde, Tour
)
select Kunde, Tour, avg(AuftrCount)
from xCountAuf
group by Kunde, Tour
Die Feldnamen musst du natürlich anpassen.
In der CTE wird je Kunde und Tour die Anzahl eindeutiger Auftragsnummern (oder was auch immer) gezählt und nach Kunde und Tour summiert "count(distinct xxx)".
Im 2. Schritt wird dann vom Zwischenergebnis (der CTE) eben der Durchschnitt gerechnet.
-
äquivalent zur Hugo Klausel:
select Kunde, Tour, avg(AuftrCount)
from (
select Kunde, Tour, count(distinct AuftrNum) as AuftrCount
from Rechnungen
group by Kunde, Tour
) Hugo
group by Kunde, Tour
Zitat von Fuerchau
Hier hilft nur die berühmte CTE (CommonTableExpression).
Beispiel:
wirh xCountAuf as (
select Kunde, Tour, count(distinct AuftrNum) as AuftrCount
from Rechnungen
group by Kunde, Tour
)
select Kunde, Tour, avg(AuftrCount)
from xCountAuf
group by Kunde, Tour
Die Feldnamen musst du natürlich anpassen.
In der CTE wird je Kunde und Tour die Anzahl eindeutiger Auftragsnummern (oder was auch immer) gezählt und nach Kunde und Tour summiert "count(distinct xxx)".
Im 2. Schritt wird dann vom Zwischenergebnis (der CTE) eben der Durchschnitt gerechnet.
-
Danke Ihr Zwei,
beide Varianten haben geklappt. ich bekomme jetzt für jeden Kunden einen Durchschnitt in der jeweiligen Tour. Jetzt habe ich nur noch eine Frage:
Wenn ich jetzt alle Ergebnisse zusammen addiere und druch die Anzahl teile, habe ich die durchschnittliche Anzahl Rechnungen aller Kunden in allen touren in einer Summe.
Bekomme ich das auch mit Eurem SQL-Statement hin.
Gruß
jenne
-
Das muss ich jetzt nicht verstehen !?
Meinst du vielleicht folgendes ?
with xCountAuf as (
select Kunde, Tour, count(distinct AuftrNum) as AuftrCount
from Rechnungen
group by Kunde, Tour
)
, xKdTour as (
select Kunde, Tour, avg(AuftrCount) as AvgCount
from xCountAuf
group by Kunde, Tour
)
select sum(AvgCount), count(*), sum(AvgCount) / count(*)
from xKdTour
-
Danke Fuerchau,
genau das war es.
Gruß
Jenne
Similar Threads
-
By Booley in forum NEWSboard Programmierung
Antworten: 5
Letzter Beitrag: 18-08-05, 08:33
-
By epsih2 in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 29-11-04, 10:06
-
By infomio in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 17-12-01, 06:30
-
By KB in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 15-05-01, 10:43
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks