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

Aggregatfunktion Aufgabe

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von _Mind_, 29 Januar 2016.

  1. _Mind_

    _Mind_ Neuer Benutzer

    Heyho liebe Community,

    ich habe im Rahmen meines Wirtschaftsinformatik-Studiums eine Reihe von SQL-Aufgaben zu lösen.
    Ich würde mich freuen, wenn ich mir bei dieser helfen könntet:

    Gegeben sei folgendes Schema zur Erfassung von Kundenbestellungen:

    Produkt (PID, Art, Hersteller, Bezeichnung)
    Kunde (KNR, Name, Alter, Bonuspunkte)
    Kauf (PID, KNR, Zeitstempel, Preis, Menge) ---Preis in Euro und Menge >= 1
    PID ist Fremdschlüssel auf Produkt, KNR ist Fremdschlüssel auf Kunde.


    Welche Kunden(Name) haben bereits mehr als 100 Produkte gekauft?

    (Hinweis: Mehrfachkäufe eines Produktes (z.B. Menge=3) sollen mitgezählt werden)

    Mein Lösungsvorschlag:

    SELECT K.Name
    FROM Kunde K
    WHERE 100 < (SELECT sum(Ka.Menge)
    FROM Kauf Ka
    WHERE K.KNR = Ka.KNR)


    Ich kann es leider nicht selbst überprüfen (bzw. wüsste nicht wie oder wo), daher wäre ich über Feedback dankbar!

    Grüße
    _Mind_
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Was ist so schwer, sich eine kleine DB zu installieren?
     
  3. _Mind_

    _Mind_ Neuer Benutzer

    Ich habe beim Googeln keinen so schnellen Weg gefunden, zumindest keinen, der den Rahmen dieser Aufgabe nicht sprengen würde.
    Wärest du so net und würdest mir Feedback zu meinem Lösungsvorschlag geben?
     
  4. akretschmer

    akretschmer Datenbank-Guru

    Code:
    test=# create table kunde (id int primary key);
    CREATE TABLE
    test=*# create table kauf(kunde int references kunde, menge int);
    CREATE TABLE
    test=*# insert into kunde values (1);
    INSERT 0 1
    test=*# insert into kunde values (2);
    INSERT 0 1
    test=*# insert into kauf values (1, 60);
    INSERT 0 1
    test=*# insert into kauf values (1, 60);
    INSERT 0 1
    test=*# insert into kauf values (2, 60);
    INSERT 0 1
    test=*# select k.id from kunde k left join kauf ka on k.id = ka.kunde group by k.id having sum(menge) > 100;
     id
    ----
      1
    (1 Zeile)
    
    test=*# rollback;
    ROLLBACK
    
     
  5. _Mind_

    _Mind_ Neuer Benutzer

    Tut mir leid, aber ich verstehe nur Bahnhof...
    Kann mir irgendjemand helfen??
     
  6. akretschmer

    akretschmer Datenbank-Guru

    das wäre der weg, den ich nehmen würde. Again: installier Dir lokal eine DB (z.B. PostgreSQL) und spiele damit. Das kostet nix und tut auch nicht weh.
     
  7. ukulele

    ukulele Datenbank-Guru

    Dein Select sieht richtig aus, ob er unter MySQL funktionieren wird weiß ich nicht, unter MSSQL schon. Die Lösung mit JOIN und HAVING von akretschmer ist aber meiner Meinung nach der elegantere Weg.
     
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