1. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

Group by - Anzahl mit Bedingung

Dieses Thema im Forum "Oracle" wurde erstellt von MarcoVreden, 12 September 2018.

  1. MarcoVreden

    MarcoVreden Benutzer

    Hallo Ihr Lieben,

    ich habe hier eine Tabelle mit Kunden, mehrere Aufträge, mehreren Artikel-Positionen, Ek und VK
    Jetzt möchte ich eine Abfrage je Kunde mit Anzahl Aufträgen und Anzahl Positionen. Geht das?

    Anzahl Positionen habe ich hinbekommen, aber nicht die Anzahl der Aufträge.

    Mit Access hatte ich das mal geschafft, indem ich eine Zwischentabelle erstellt habe, aber vielleicht geht das mit dem PL/SQL-Develper ja auch ohne Zwischentabelle?
     
  2. akretschmer

    akretschmer Datenbank-Guru

    in etwa so:

    select kunde, count(auftrag), count(position) from <table> group by kunde;

    Bei genauerer Beschreibung Deiner Tabelle wäre u.U. eine exaktere Antwort möglich ...
     
  3. MarcoVreden

    MarcoVreden Benutzer

    wie schnell du wieder bist :)

    Kunde A - Auftrag 1 - Artikel 1 - 50 Euro - 100 Euro
    Kunde A - Auftrag 1 - Artikel 2 - 60 Euro - 120 Euro
    Kunde A - Auftrag 2 - Artikel 1 50 Euro - 100 Euro
    Kunde A - Auftrag 2 - Artikel 3 - 70 Euro - 100 Euro
    Kunde A - Auftrag 2 - Artikel 4 - 60 Euro - 120 Euro
    Kunde A - Auftrag 2 - Artikel 5 50 Euro - 100 Euro
    Kunde B...

    Ergebnis der Abfrage sollte sein
    Kunde - Anz.Aufträge - Anz.Positionie - Summe EK - Summe VK
    A - 2 - 6 - 340,00 - 640
    B ...

    Bei Anzahl Aufträge scheitere ich. Denn für einen Auftrag gibt es mehrere Zeilen.
     
  4. akretschmer

    akretschmer Datenbank-Guru

    Code:
    test=*# select * from marco;
     kunde | auftrag | artikel | preis
    -------+---------+---------+-------
     a     |       1 |       1 |    50
     a     |       1 |       2 |    60
     a     |       2 |       1 |    50
     a     |       2 |       3 |    70
     a     |       2 |       4 |    60
     b     |       1 |       1 |   100
    (6 rows)
    
    test=*# select kunde, count(distinct auftrag), count(artikel), sum(preis) from marco group by kunde;
     kunde | count | count | sum
    -------+-------+-------+-----
     a     |     2 |     5 | 290
     b     |     1 |     1 | 100
    (2 rows)
    
    test=*#
    
     
    MarcoVreden gefällt das.
  5. MarcoVreden

    MarcoVreden Benutzer

    so einfach, so genial - VIELEN DANK! :)

    Ich hoffe ich bin hier auch mit so einfachen Fragen willkommen. Die Suchfunktion hatte mir leider nicht geholfen... habe wohl falsch gesucht :(
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden