DarkSQL by Darkleo.com

DarkSQL

Mengenoperationen und VIEW


Zu welchen Aufträgen (Auftragsnummer) gibt es Rechnungen ?

select auftrag_nr
from auftraege
intersect
select
auftrag_nr
from rechnungen;

Zu welchen Aufträgen (Auftragsnummer) gibt es keine Rechnungen ?

select auftrag_nr
from auftraege
minus
select
auftrag_nr
from rechnungen;

Gibt es Kunden, die auch Lieferanten sind (Übereinstimmung über den Namen vornehmen)

select name
from kunden
intersect
select
name
from lieferanten;

Erzeugen Sie einen View „Auftragswert" mit folgenden Daten: Auftragsnummer, Kundennummer, Auftragsdatum, Auftragswert (= Verkaufspreis * Verkaufsmenge summiert über alle Positionen des Auftrages). Testen Sie den View (mittels select)

create view auftragswert (auftragsnummer, kundennummer, auftragsdatum, auftragswert)
as
select
a.auftrag_nr, kunde_nr, auftrag_datum, sum(menge*preis)
from auftraege a
join auftragspositionen p
on a.auftrag_nr = p.auftrag_nr
group by a.auftrag_nr, kunde_nr, auftrag_datum;

Erzeugen Sie einen View, der jahresweise die Summe der Auftragswerte aller Aufträge des Jahres zeigt. Basieren Sie den View auf dem View „Auftragswert".

create view jahreswert (jahr, auftragswert)
as
select extract
(year from auftragsdatum),
sum(auftragswert)
from auftragswert
group by extract(year from auftragsdatum);

Erstellen Sie einen View, der - sortiert nach Datum -die an dem jeweiligen Tag fälligen Rechnungsbeträge (unbezahlt!) aufführt.

create view faellige_betraege (datum, betrag)
as
select
datum_faellig, sum(rechnung_betrag)
from rechnungen
where bezahlt = 0
group by datum_faellig;

Erstellen Sie einen View, der je Kunde die durchschnittliche Anzahl der Tage aufführt, die der Kunde sich mit dem Bezahlen seiner Rechnungen „Zeit" lässt (Differenz Fälligkeitsdatum / Zahldatum bei bezahlten Rechnungen, Differenz Fälligkeitsdatum / Tagesdatum bei unbezahlten Rechnungen)

create view zahlverhalten (kunde, tage)
as
select
kunde_nr , sum(
case when
bezahlt=1 then zahldatum-
datum_faellig
else current_date – datum_faellig
end )
from
rechnungen
group by kunde_nr;

Ermitteln Sie mit Hilfe des vorigen Views, welcher Kunde sich im Schnitt am meisten Zeit lässt, seine Rechnungen zu bezahlen (nur select, kein view)

select kunde
from zahlverhalten
where tage =
(select max(tage)
from zahlverhalten);