sql 2b Flashcards

1
Q

Erstellen Sie eine Liste aller Kunden mit ihren Bestellungen

A

select Kunden.KundenNr, Kunden.Name, Bestellung.BestellNr,
Bestellung.Datum
from Kunden, Bestellung
where Kunden.KundenNr = Bestellung.KundenNr;

select Kunden.KundenNr, Kunden.Name, Bestellung.BestellNr,
Bestellung.Datum
from Kunden INNER JOIN Bestellung
ON Kunden.KundenNr = Bestellung.KundenNr;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Erstellen Sie eine Liste mit allen Artikeln und ihren Bestellungen, wobei auch
diejenigen Artikel ausgegeben werden sollen, die noch nie bestellt wurden.

A

select A.*, BA.BestellNr, BA.Menge
from Artikel A LEFT JOIN BestellungArtikel BA
ON A.ArtikelNr = BA.ArtikelNr;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Erstellen Sie eine Liste mit allen Bestellungen mit ihren Lieferungen, wobei
auch diejenigen Bestellungen ausgegeben werden sollen, die noch keine
Lieferung erfolgt ist.

A

select BA.*, L.Datum, L.Menge
from BestellungArtikel BA LEFT JOIN Lieferung L
ON BA.ArtikelNr = L.ArtikelNr
AND BA.BestellNr = L.BestellNr;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Erstellen Sie eine Liste mit allen Bestellungen, auch mit denjenigen, für die
noch keine Artikel erfasst wurden.

A

select B.BestellNr, BA.ArtikelNr, BA.Menge
FROM Bestellung B LEFT JOIN BestellungArtikel BA
ON B.BestellNr = BA.BestellNr;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Welcher Mitarbeiter hat das kleinste Gehalt

A

select name, min(gehalt)
FROM Mitarbeiter;

select name, min(gehalt)
FROM Mitarbeiter
group by name;

select *
FROM Mitarbeiter
where gehalt = min(gehalt);

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Welcher Mitarbeiter hat das kleinste Gehalt

A

select *
FROM Mitarbeiter
where gehalt = (select min(gehalt) from mitarbeiter);

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Welcher Mitarbeiter hat das größte Gehalt

A

select *
FROM Mitarbeiter
where gehalt = (select max(gehalt) from mitarbeiter);

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Welche Mitarbeiter bekommen ein größeres Gehalt als der Durschnitt aller
Mitarbeiter

A

select *
FROM Mitarbeiter
where gehalt > (select avg(gehalt) from mitarbeiter);

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Welcher Mitarbeiter hat ein Gehalt, das genauso hoch ist, wie das kleinste
Gehalt der Mitarbeiter, die nach dem 1.1.2000 eingestellt wurden.

A

select *
from mitarbeiter
where gehalt = (select min(gehalt)
from mitarbeiter
where einstellung > ‘2000-1-1’)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Welcher Mitarbeiter, der nach dem 1.1.2000 eingestellt wurde, hat ein
Gehalt, das genauso hoch ist, wie das kleinste Gehalt aller Mitarbeiter.

A

select * from mitarbeiter
where gehalt = (select min(gehalt) from mitarbeiter)
and einstellung > ‘2000-1-1’

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Welche Mitarbeiter haben ein Gehalt, das größer ist, als das Durchschnitts-
gehalts der Mitarbeiter, die nach dem 1.1.2008 eingestellt wurden.

A

select * from mitarbeiter
where gehalt > (select avg(gehalt)
from mitarbeiter
where einstellung > ‘2008-1-1’)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Welcher Mitarbeiter hat ein Gehalt, das größer ist, wie das Doppelte des
Durchschnittsgehaltes aller Mitarbeiter.

A

select * from mitarbeiter
where gehalt > 2* (select 2*avg(gehalt *2) *2
from mitarbeiter) *2;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Welche Kunden haben bereits Bestellungen gemacht, wobei ein Kunde nur
1x ausgegeben werden darf.
Ausgabe: Attribute der Tabelle Kunden; Lösung mit join

A

select k.kundenNr, k.Name
from Kunden k, bestellung b
where k.kundenNr = b.kundenNr
group by k.kundenNr, k.name;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Aufgabe wie oben; Lösung mit subquery

A

SELECT kundenNr, Name
FROM Kunden
where kundenNr IN (select kundenNr
from bestellung);

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Welche Artikel wurden nach dem 31.1.2008 bestellt
Ausgabe: Artikelnummer; Lösung mit join

A

select artikelNr
from bestellungartikel ba,bestellung b
where ba.bestellnr=b.bestellnr
and datum > ‘2008-1-31’;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Aufgabe wie oben; Lösung mit subquery

A

SELECT artikelNr
FROM bestellungartikel
where bestellnr in (select bestellnr
from bestellung
where datum>’2008-1-31’)

17
Q

Welche Artikel wurden nach dem 31.1.2008 bestellt
Ausgabe: Artikelnummer, Bezeichnung; Lösung mit join

A

select a.*
from bestellungartikel ba, bestellung b, artikel a
where ba.bestellnr = b.bestellnr
and ba.artikelnr = a.artikelnr
and datum > ‘2008-1-31’;

18
Q

Aufgabe wie vorhin; Lösung mit subquery

A

select a.*
from bestellungartikel ba, artikel a
where bestellnr in (select bestellnr
from bestellung
where datum > ‘2008-1-31’)
and ba.artikelnr = a.artikelnr;

select *
from artikel
where artikelnr in (select ba.artikelnr
from bestellungartikel ba, bestellung b
where ba.bestellnr = b.bestellnr
and datum > ‘2008-1-31’)

19
Q

Welche Kunden haben noch keine Bestellungen gemacht.
Ausgabe: Attribute der Tabelle Kunden

A

SELECT kundenNr, Name
FROM Kunden
where kundenNr NOT IN (select kundenNr
from bestellung);

20
Q

Gleiche Abfrage wie oben aber mit outer-join

A

SELECT k.kundennr, name
FROM Kunden k LEFT JOIN bestellung b
ON k.kundennr = b.kundennr
WHERE bestellnr is null;

21
Q

Welche Artikel wurden noch nie bestellt

A

SELECT artikelNr, bezeichnung
FROM artikel
WHERE artikelNr not in (select artikelNr
from bestellungArtikel);

22
Q

Gleiche Abfrage wie oben aber mit outer-join

A

SELECT a.artikelNr, bezeichnung
FROM artikel a LEFT JOIN bestellungArtikel ba
ON a.artikelNr = ba.artikelNr
WHERE ba.artikelNr is null;

23
Q

Geben Sie eine Liste der Beträge aus; neben dem Betrag soll die Summe
aller Beträge angezeigt werden

A

select betrag, (select sum(betrag) from transaktionen)
from transaktionen;

24
Q

Geben Sie eine Liste der Beträge aus; neben dem Betrag soll der %-Anteil
diese Betrages an der Summe aller Beträge angezeigt werden

A

SELECT betrag,
Betrag / (select sum(betrag) from transaktionen) *100 as
“%-Anteil”
FROM transaktionen;

25
Q

Geben Sie eine Liste der Beträge aus; neben dem Betrag soll der %-Anteil
diese Betrages an der Summe aller Beträge angezeigt werden

A

SELECT betrag,
Betrag::decimal / (select sum(betrag) from
transaktionen) *100 as “%-Anteil”
FROM transaktionen;

26
Q

Wieviele unterschiedliche Abteilungen befinden sich in Tabelle Mitarbeiter

A

select count(distinct abteilung)
from mitarbeiter

Lösung als subquery an Stelle einer Tabelle (from)

select count(*)
from (select distinct(abteilung) from mitarbeiter) s

Hinweis: bei subqueries bei from ist ein table alias erforderlich, auch wenn
dieser nicht verwendet wird