SQL allgemein, links,...
Dienstag, 29. Januar 2008, 10:28
Distict
SELECT DISTINCT Vorname FROM Kunde
Operatoren in WHERE
1) ( )
2) * /
3) + -
4) = <> > <
5) NOT AND OR
Between
SELECT Vorname, Nachname, Plz FROM Kunde WHERE Plz BETWEEN 1010 AND 4030
Group by, wenn...
COUNT()
SUM()
AVG()
MAX()
MIN()
Beispiele
1.Es sollen alle bisher erfassten Aufträge angezeigt werden, und zwar mit Auftragsnummer, Kundenname (Nachname) und Auftragssumme. Die
Anzeige soll absteigend nach der Auftragssumme sortiert werden.
SELECT aa.Auftragsnummer, k.Nachname, SUM(b.Preis) AS Auftragssumme
FROM Auftrag a, Auftragspos aa, Buch b, Kunde k
WHERE aa.Auftragsnummer=a.Nr
AND a.Kundennummer=k.Nr
AND aa.Buchnummer=b.Nr
GROUP BY k.Nachname
ORDER BY 3 DESC
2. Anzahl der Chemiebücher je Verlag, absteigend gereiht nach Vorkommen
SELECT COUNT(*) AS Vorkommen, b.Verlag
FROM Buch b
WHERE b.Titel LIKE "%chemie%"
GROUP BY b.Verlag
ORDER BY 1
3. Es soll der Verlagsname und die Anzahl der Bücher, die dieser Verlag
veröffentlicht hat, ausgegeben werden.
SELECT v.Name, COUNT(b.Titel)
FROM Verlag v, Buch b
WHERE v.Kurzbezeichnung=b.Verlag
GROUP BY v.Name
4. Wie viele Kunden wohnen in welcher Region (gruppiert nach Region;
Anzeige: Region und Anzahl der Kunden)?
SELECT p.Region, COUNT(k.Nr) AS Anzahl_der_Kunden
FROM Kunde k, PLZ p
WHERE p.Plz=k.Plz
GROUP BY p.Region
5. Gesamtwert aller Bücher in denen das Wort „bio“ vorkommt? Anzeige: Summe
SELECT SUM(b.Preis) AS Summe
FROM Buch b
WHERE b.Titel LIKE "%bio%"
6. Zeigen Sie den Nachnamen und das Datum der Aufträge an die im
Zeitraum 26.01.2000 bis 28.01.2000 getätigt wurden. Ordnen sie die
Anzeige absteigend nach Nachnamen.
SELECT k.Nachname, a.Datum
FROM Auftrag a, Kunde k
WHERE k.Nr=a.Kundennummer AND a.Datum BETWEEN "2000-01-26"
AND "2000-01-28"
ORDER BY k.Nachname DESC
Hilfreiche Beispiele von Kolleg/innen
ABC-Analyse
/0355143/stories/18734/
Umsätze & co zu 2006
/0256479/stories/17909/
Auftragszahlen und distinct
/0256479/stories/17660/
Bester Kunde, Ladenhüter,...
/0256479/stories/17121/
SELECT DISTINCT Vorname FROM Kunde
Operatoren in WHERE
1) ( )
2) * /
3) + -
4) = <> > <
5) NOT AND OR
Between
SELECT Vorname, Nachname, Plz FROM Kunde WHERE Plz BETWEEN 1010 AND 4030
Group by, wenn...
COUNT()
SUM()
AVG()
MAX()
MIN()
Beispiele
1.Es sollen alle bisher erfassten Aufträge angezeigt werden, und zwar mit Auftragsnummer, Kundenname (Nachname) und Auftragssumme. Die
Anzeige soll absteigend nach der Auftragssumme sortiert werden.
SELECT aa.Auftragsnummer, k.Nachname, SUM(b.Preis) AS Auftragssumme
FROM Auftrag a, Auftragspos aa, Buch b, Kunde k
WHERE aa.Auftragsnummer=a.Nr
AND a.Kundennummer=k.Nr
AND aa.Buchnummer=b.Nr
GROUP BY k.Nachname
ORDER BY 3 DESC
2. Anzahl der Chemiebücher je Verlag, absteigend gereiht nach Vorkommen
SELECT COUNT(*) AS Vorkommen, b.Verlag
FROM Buch b
WHERE b.Titel LIKE "%chemie%"
GROUP BY b.Verlag
ORDER BY 1
3. Es soll der Verlagsname und die Anzahl der Bücher, die dieser Verlag
veröffentlicht hat, ausgegeben werden.
SELECT v.Name, COUNT(b.Titel)
FROM Verlag v, Buch b
WHERE v.Kurzbezeichnung=b.Verlag
GROUP BY v.Name
4. Wie viele Kunden wohnen in welcher Region (gruppiert nach Region;
Anzeige: Region und Anzahl der Kunden)?
SELECT p.Region, COUNT(k.Nr) AS Anzahl_der_Kunden
FROM Kunde k, PLZ p
WHERE p.Plz=k.Plz
GROUP BY p.Region
5. Gesamtwert aller Bücher in denen das Wort „bio“ vorkommt? Anzeige: Summe
SELECT SUM(b.Preis) AS Summe
FROM Buch b
WHERE b.Titel LIKE "%bio%"
6. Zeigen Sie den Nachnamen und das Datum der Aufträge an die im
Zeitraum 26.01.2000 bis 28.01.2000 getätigt wurden. Ordnen sie die
Anzeige absteigend nach Nachnamen.
SELECT k.Nachname, a.Datum
FROM Auftrag a, Kunde k
WHERE k.Nr=a.Kundennummer AND a.Datum BETWEEN "2000-01-26"
AND "2000-01-28"
ORDER BY k.Nachname DESC
Hilfreiche Beispiele von Kolleg/innen
ABC-Analyse
/0355143/stories/18734/
Umsätze & co zu 2006
/0256479/stories/17909/
Auftragszahlen und distinct
/0256479/stories/17660/
Bester Kunde, Ladenhüter,...
/0256479/stories/17121/