DarkSQL by Darkleo.com
DarkSQL
Subqueries
Nenne je Kunde (Kundennummer) die Rechnungsnummer der Rechnung, welche die maximale Differenz zwischen Rechnungsdatum und Zahldatum von allen seinen Rechnungen hat.
select kunde_nr, rechnung_nrfrom rechnungen r1 where rechnung_datum-zahldatum = (select max(rechnung_datum-zahldatum) from rechnungen r2 where r1.kunde_nr = r2.Kunde_nr); |
Stellen Sie folgende Liste auf: Kundennummer, Name, Anzahl der Aufträge des Kunden in 2001, Anzahl der Rechnungen des Kunden in 2001. Schreiben Sie die Zeichenkette „Nicht vorhanden" anstelle des Wertes 0 bei jeder der beiden Zahlen.
select kunde_nr, name,(select case when count(*) = 0 then 'Nicht vorhanden ' else cast (count(*) as char ) end from auftraege a where a.kunde_nr = k.kunde_nr and auftrag_datum between '01-01-2001' and '31-12-2001 ') , (select case when count(*) = 0 then 'Nicht vorhanden ' else cast (count(*) as char ) end from rechnungen r where r.kunde_nr = k.kunde_nr and rechnung_datum between '01-01-2001' and '31-12-2001 ') from kunden k; |
Welche Artikel kommen in keiner Auftragsposition vor (Nur Artikelnummer zeigen)
select artikel_nrfrom artikel where artikel_nr not in (select artikel_nr from auftragspositionen); |
Liste alle Artikel auf, die in wenigstens einer Auftragsposition vorkommen. Geben Sie für die Lösung dieser Aufgabe 4 Alternativen mit Subqueries an.
select artikel_nrfrom artikel where artikel_nr in (select artikel_nr from auftragspositionen); select artikel_nr from artikel a where exists (select artikel_nr from auftragspositionen b where a.artikel_nr=b.artikel_nr); select artikel_nrfrom artikel where artikel_nr = any (select artikel_nr from auftragspositionen); select artikel_nr from artikel a where (select count(*) from auftragspositionen p where a.artikel_nr=p.artikel_nr )>0; |
Welche Artikel haben die größte Gewinnspanne ihrer Gruppe (Differenz Verkaufspreis / Einkaufspreis). Liste den Artikel, die Gruppe, die Gewinnspanne. Ausgabe sortiert nach Spanne.
select artikel_nr, a.warengruppe, verkaufspreis-einkaufspreisfrom artikel a where verkaufspreis-einkaufspreis = (select max(verkaufspreis- einkaufspreis) from artikel b where a.warengruppe = b.warengruppe) order by verkaufspreis-einkaufspreis; |
Liste alle Kunden (Kundennummer, Name) auf, für die eine unbezahlte Rechnung existiert.
select kunde_nr, namefrom kunden where kunde_nr in (select kunde_nr from rechnungen where bezahlt = 0); Alternative Lösungen mit exists, =any, count |
Liste für alle Kunden , für die eine unbezahlte Rechnung existiert, die Kundennumer, den Namen und die Summe der Rechnungsbeträge der unbezahlten Rechnungen auf.
select kunde_nr, name,(select sum(rechnung_betrag) from rechnungen r where r.kunde_nr=k.kunde_nr and bezahlt = 0) from kunden k where kunde_nr in (select kunde_nr from rechnungen where bezahlt = 0); |