[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    May 2004
    Beiträge
    184

    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

  2. #2
    Registriert seit
    Nov 2008
    Beiträge
    2
    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

  3. #3
    Registriert seit
    May 2004
    Beiträge
    184
    Hallo Eagle,

    die Select-Anweisung mit AVG(Aufträge) funktioniert so nicht, da ich die Spalte Aufträge nicht habe.

    Gruß
    Jenne

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.243
    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.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  5. #5
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    ä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 Zitat von Fuerchau Beitrag anzeigen
    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.
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  6. #6
    Registriert seit
    May 2004
    Beiträge
    184
    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

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.243
    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
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  8. #8
    Registriert seit
    May 2004
    Beiträge
    184
    Danke Fuerchau,

    genau das war es.


    Gruß
    Jenne

Similar Threads

  1. Feld mit loval via SQL belegen
    By Booley in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 18-08-05, 08:33
  2. AS/400 Zugriff via Linked Server unter SQL Server 2000
    By epsih2 in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 29-11-04, 10:06
  3. Update via SQL TabelleA -> TabelleB
    By infomio in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 17-12-01, 06:30
  4. CAST von Numeric nach Date via SQL
    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
  •