You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Berechnung des durchschnittlichen Verkaufspreises aller Produkte.
SELECTAvg(vkpreis) AS Durchschnittspreis
FROMmydb.produkt;
Ermitteln der Mitarbeitern mit Rolle
SELECTm.idmitarbeiterAS"Mitarbeiter ID",
m.nachnameAS"Nachname",
m.vornameAS"Vorname",
r.NAMEAS"Rolle"FROMmydb.mitarbeiter m
JOINmydb.mitarbeiter_hat_rollen mr
ONm.idmitarbeiter=mr.mitarbeiter_idmitarbeiterJOINmydb.rolle r
ONmr.rolle_idrolle=r.idrolle;
Berechnung der Gesamtzahl der Mitarbeiter in jeder Stadt.
SELECTmydb.plz.stadt,
Count(*) AS Anzahl_Mitarbeiter
FROMmydb.mitarbeiterINNER JOINmydb.adresseONmydb.mitarbeiter.adresse_idadresse =mydb.adresse.idadresse
INNER JOINmydb.plzONmydb.adresse.plz_idplz =mydb.plz.idplz
GROUP BY mydb.plz.stadt;
Auswahl aller Lieferanten, die mehr als 10 Produkte liefern.
SELECTmydb.lieferant.idlieferant,
mydb.lieferant.NAME,
Count(mydb.produkt_hat_lieferant.produkt_produktid) AS AnzahlProdukte
FROMmydb.lieferantINNER JOINmydb.produkt_hat_lieferantONmydb.lieferant.idlieferant =mydb.produkt_hat_lieferant.lieferant_idlieferant
GROUP BY mydb.lieferant.idlieferant,
mydb.lieferant.NAME
HAVINGCount(mydb.produkt_hat_lieferant.produkt_produktid) >10;
Aktualisierung des Bestands eines bestimmten Produkts (Auslösung des Triggers zur Bestellung).
UPDATEmydb.produktSET bestand =4WHERE idprodukt =1;
SELECT*FROMmydb.bestellungen;
Auswahl aller Produkte, die nicht im Bestand sind
SELECT*FROMmydb.produktWHERE bestand =0;
Ermittlung der Anzahl der Verkäufe pro Produkt.
SELECT produkt_produktid,
Count(*) AS Anzahl_Verkaeufe
FROMmydb.produktverkauf
GROUP BY produkt_produktid;
Rekursive Anfrage zur Ermittlung aller Vertretungen für eine gegebene Vertretung (idVertretung = 1).
WITH recursive vertretungskette AS
(
SELECTv.idvertretung,
v.vertretung_idvertretung,
v.vertretungsgrund,
m.vorname,
m.nachnameFROMmydb.vertretung v
JOINmydb.mitarbeiter m
ONv.vertretenermitarbeiter_id=m.idmitarbeiterWHEREv.idvertretung=1UNION ALLSELECTv.idvertretung,
v.vertretung_idvertretung,
v.vertretungsgrund,
m.vorname,
m.nachnameFROMmydb.vertretung v
JOIN vertretungskette
ONv.vertretung_idvertretung=vertretungskette.idvertretungJOINmydb.mitarbeiter m
ONv.vertretenermitarbeiter_id=m.idmitarbeiter )
SELECT*FROM vertretungskette;
Alle Produkte, welchen einen geringen Bestand haben und noch nicht bestellt sind.
SELECT*FROMmydb.produktAS p
WHERE bestand <=5AND NOT EXISTS (SELECT1FROMmydb.bestellung_haben_produkteAS bhp
JOINmydb.bestellungenAS b
ONb.idbestellungen=bhp.bestellungen_idbestellungenWHEREbhp.produkt_idprodukt=p.idproduktANDb.bestellstatus='Bestellt');
Alle Kategorien auflisten, welche mehr als 5 Produkte haben und sortiere diese absteigend.
SELECTCount(idprodukt) AS Menge,
kategorie
FROMmydb.produkt
GROUP BY kategorie
HAVINGCount(idprodukt) >=5
ORDER BY kategorie DESC;
Sind alle Produkte im Bestand (Allquantor)
SELECT CASE
WHEN NOT EXISTS (SELECT*FROMmydb.produktWHERE bestand <=0) THEN
'Ja, alle Produkte sind im Bestand.'
ELSE 'Nein, nicht alle Produkte sind im Bestand.'
END AS AllquantorErgebnis;
Alle Adressen ausgeben, die keinem Mitarbeiter zugeordnet sind
SELECTa.straße,
a.hausnummer,
a.plz_idplzFROMmydb.mitarbeiter m
RIGHT OUTER JOINmydb.adresse a
ONm.adresse_idadresse=a.idadresseWHEREm.idmitarbeiter IS NULL;
Produktpreise (EK) updaten. Basierend auf der Tabelle Lieferantenpreise
UPDATEmydb.produktSET ekpreis = (SELECT neuerekpreis
FROMmydb.lieferantenpreiseWHEREmydb.produkt.idprodukt =mydb.lieferantenpreise.produktid
ORDER BY idlieferantenpreise DESCLIMIT1)
WHERE EXISTS (SELECT1FROMmydb.lieferantenpreiseWHEREmydb.produkt.idprodukt =mydb.lieferantenpreise.produktid)
;