SQL-Beispielvariation: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
|||
Zeile 1: | Zeile 1: | ||
<!--<yambe:breadcrumb>SQL|SQL</yambe:breadcrumb>--> | <!--<yambe:breadcrumb>SQL|SQL</yambe:breadcrumb>--> | ||
{{Kurzform|Die Lerneinheit "SQL-Beispielvariation" dient der aufbauenden Erläuterung der Aggregation mittel GROUP BY Klausel. Die Anwendungsbeispiele sind als aktive Abfragen auf | {{Kurzform|Die Lerneinheit "SQL-Beispielvariation" dient der aufbauenden Erläuterung der Aggregation mittel GROUP BY Klausel. Die Anwendungsbeispiele sind als aktive Abfragen auf der Trainingsdatenbank SQL:IDV:EDU installiert.}} | ||
Zeile 57: | Zeile 57: | ||
</html> | </html> | ||
==Umsätze je | ==Eingrenzung der Umsätze je Kunde auf Werte >= 100.000== | ||
<pre>SELECT PLZ. | <pre>SELECT Kunde.Nr, Kunde.Nachname, PLZ.Ort, ROUND(SUM(Auftragspos.Menge*Buch.Preis),2) AS Umsatz | ||
FROM PLZ, Kunde, Auftrag, Auftragspos, Buch | FROM PLZ, Kunde, Auftrag, Auftragspos, Buch | ||
WHERE PLZ.Plz=Kunde.Plz AND Kunde.Nr=Auftrag.Kundennummer AND Auftrag.Nr=Auftragspos.Auftragsnummer AND Auftragspos.Buchnummer=Buch.Nr | WHERE PLZ.Plz=Kunde.Plz | ||
GROUP BY PLZ. | AND Kunde.Nr=Auftrag.Kundennummer | ||
ORDER BY | AND Auftrag.Nr=Auftragspos.Auftragsnummer | ||
AND Auftragspos.Buchnummer=Buch.Nr | |||
GROUP BY Kunde.Nr, Kunde.Nachname, PLZ.Ort | |||
HAVING Umsatz >= 100000 | |||
ORDER BY 4 DESC</pre> | |||
<html> | <html> | ||
<form method="post" action="http://sql.idv.edu/thema/work/sql.php" target="_blank"> | <form method="post" action="http://sql.idv.edu/thema/work/sql.php" target="_blank"> | ||
<input type="hidden" name="select" value="SELECT PLZ. | <input type="hidden" name="select" value="SELECT Kunde.Nr, Kunde.Nachname, PLZ.Ort, ROUND(SUM(Auftragspos.Menge*Buch.Preis),2) AS Umsatz | ||
FROM PLZ, Kunde, Auftrag, Auftragspos, Buch | FROM PLZ, Kunde, Auftrag, Auftragspos, Buch | ||
WHERE PLZ.Plz=Kunde.Plz | WHERE PLZ.Plz=Kunde.Plz | ||
Zeile 73: | Zeile 78: | ||
AND Auftrag.Nr=Auftragspos.Auftragsnummer | AND Auftrag.Nr=Auftragspos.Auftragsnummer | ||
AND Auftragspos.Buchnummer=Buch.Nr | AND Auftragspos.Buchnummer=Buch.Nr | ||
GROUP BY PLZ. | GROUP BY Kunde.Nr, Kunde.Nachname, PLZ.Ort | ||
ORDER BY | HAVING Umsatz >= 100000 | ||
ORDER BY 4 DESC"> | |||
<input type="submit" value="Ausführen"> | <input type="submit" value="Ausführen"> | ||
</form> | </form> | ||
</html> | </html> | ||
== | ==Umsätze je Region== | ||
<pre>SELECT | <pre>SELECT PLZ.Region, ROUND(SUM(Auftragspos.Menge*Buch.Preis),2) AS Regionsumsatz | ||
FROM PLZ, Kunde, Auftrag, Auftragspos, Buch | FROM PLZ, Kunde, Auftrag, Auftragspos, Buch | ||
WHERE PLZ.Plz=Kunde.Plz | WHERE PLZ.Plz=Kunde.Plz AND Kunde.Nr=Auftrag.Kundennummer AND Auftrag.Nr=Auftragspos.Auftragsnummer AND Auftragspos.Buchnummer=Buch.Nr | ||
AND Kunde.Nr=Auftrag.Kundennummer | GROUP BY PLZ.Region | ||
AND Auftrag.Nr=Auftragspos.Auftragsnummer | ORDER BY 2 DESC</pre> | ||
AND Auftragspos.Buchnummer=Buch.Nr | |||
GROUP | |||
ORDER BY | |||
<html> | <html> | ||
<form method="post" action="http://sql.idv.edu/thema/work/sql.php" target="_blank"> | <form method="post" action="http://sql.idv.edu/thema/work/sql.php" target="_blank"> | ||
<input type="hidden" name="select" value="SELECT | <input type="hidden" name="select" value="SELECT PLZ.Region, ROUND(SUM(Auftragspos.Menge*Buch.Preis),2) AS Regionsumsatz | ||
FROM PLZ, Kunde, Auftrag, Auftragspos, Buch | FROM PLZ, Kunde, Auftrag, Auftragspos, Buch | ||
WHERE PLZ.Plz=Kunde.Plz | WHERE PLZ.Plz=Kunde.Plz | ||
Zeile 100: | Zeile 101: | ||
AND Auftrag.Nr=Auftragspos.Auftragsnummer | AND Auftrag.Nr=Auftragspos.Auftragsnummer | ||
AND Auftragspos.Buchnummer=Buch.Nr | AND Auftragspos.Buchnummer=Buch.Nr | ||
GROUP BY | GROUP BY PLZ.Region | ||
ORDER BY 2 DESC"> | |||
ORDER BY | |||
<input type="submit" value="Ausführen"> | <input type="submit" value="Ausführen"> | ||
</form> | </form> | ||
</html> | </html> |
Version vom 14. Dezember 2011, 18:22 Uhr
Die Lerneinheit "SQL-Beispielvariation" dient der aufbauenden Erläuterung der Aggregation mittel GROUP BY Klausel. Die Anwendungsbeispiele sind als aktive Abfragen auf der Trainingsdatenbank SQL:IDV:EDU installiert. |
Unterschiedliche Aggregationsstufen
Nachfolgende Beispiele liefern Ergebnisse mit unterschiedlichen Verdichtungsstufen (Aggregationsstufen) der Kennzahl Umsatz. Beginnend mit der Auflistung der Umsätze je Auftrag, fortgesetzt mit den Umsätzen je Kunde und abschließend mit den Umsätzen je Region.
Aus der Logik der Aggregierung ist abzuleiten, dass den Ergebnissen unterschiedliche Merkmale (Felder) beizufügen sind. In der Regel macht es keinen Sinn, Merkmale einer niedrigeren Aggregationsstufe als für die Verdichtung gewählt, in die Merkmalsliste aufzunehmen. So liefert z. B. das Merkmal "Auftragsnummer" in der Ermittlung des Umsätze je Kunde wenig Information, da Kundenumsätze in der Regel aus der Summe mehrerer Aufträge gebildet wird.
Die Zahl der Treffer verringert sich, je höher die Aggregationsstufe, die Werte hingegen steigen.
Umsätze je Auftrag
SELECT Kunde.Nr AS 'Kundennr.', Kunde.Nachname, Auftrag.Nr AS 'Auftragsnr.', SUM(Auftragspos.Menge*Buch.Preis) AS 'Umsatz/Auftrag' FROM Kunde, Auftrag, Auftragspos, Buch WHERE Kunde.Nr=Auftrag.Kundennummer AND Auftrag.Nr=Auftragspos.Auftragsnummer AND Auftragspos.Buchnummer=Buch.Nr GROUP BY Auftrag.Nr, Kunde.Nr, Kunde.Nachname ORDER BY 2,3
<html> <form method="post" action="http://sql.idv.edu/thema/work/sql.php" target="_blank"> <input type="hidden" name="select" value="SELECT Kunde.Nr AS 'Kundennr.', Kunde.Nachname, Auftrag.Nr AS 'Auftragsnr.', SUM(Auftragspos.Menge*Buch.Preis) AS 'Umsatz/Auftrag' FROM Kunde, Auftrag, Auftragspos, Buch WHERE Kunde.Nr=Auftrag.Kundennummer AND Auftrag.Nr=Auftragspos.Auftragsnummer AND Auftragspos.Buchnummer=Buch.Nr GROUP BY Auftrag.Nr, Kunde.Nr, Kunde.Nachname ORDER BY 2,3"> <input type="submit" value="Ausführen"> </form> </html>
Umsätze je Kunde
SELECT Kunde.Nr, Kunde.Nachname, PLZ.Ort, ROUND(SUM(Auftragspos.Menge*Buch.Preis),2) AS Umsatz FROM PLZ, Kunde, Auftrag, Auftragspos, Buch WHERE PLZ.Plz=Kunde.Plz AND Kunde.Nr=Auftrag.Kundennummer AND Auftrag.Nr=Auftragspos.Auftragsnummer AND Auftragspos.Buchnummer=Buch.Nr GROUP BY Kunde.Nr, Kunde.Nachname, PLZ.Ort ORDER BY Kunde.Nr
<html> <form method="post" action="http://sql.idv.edu/thema/work/sql.php" target="_blank"> <input type="hidden" name="select" value="SELECT Kunde.Nr, Kunde.Nachname, PLZ.Ort, ROUND(SUM(Auftragspos.Menge*Buch.Preis),2) AS Umsatz FROM PLZ, Kunde, Auftrag, Auftragspos, Buch WHERE PLZ.Plz=Kunde.Plz AND Kunde.Nr=Auftrag.Kundennummer AND Auftrag.Nr=Auftragspos.Auftragsnummer AND Auftragspos.Buchnummer=Buch.Nr GROUP BY Kunde.Nr, Kunde.Nachname, PLZ.Ort ORDER BY Kunde.Nr"> <input type="submit" value="Ausführen"> </form> </html>
Eingrenzung der Umsätze je Kunde auf Werte >= 100.000
SELECT Kunde.Nr, Kunde.Nachname, PLZ.Ort, ROUND(SUM(Auftragspos.Menge*Buch.Preis),2) AS Umsatz FROM PLZ, Kunde, Auftrag, Auftragspos, Buch WHERE PLZ.Plz=Kunde.Plz AND Kunde.Nr=Auftrag.Kundennummer AND Auftrag.Nr=Auftragspos.Auftragsnummer AND Auftragspos.Buchnummer=Buch.Nr GROUP BY Kunde.Nr, Kunde.Nachname, PLZ.Ort HAVING Umsatz >= 100000 ORDER BY 4 DESC
<html>
<form method="post" action="http://sql.idv.edu/thema/work/sql.php" target="_blank">
<input type="hidden" name="select" value="SELECT Kunde.Nr, Kunde.Nachname, PLZ.Ort, ROUND(SUM(Auftragspos.Menge*Buch.Preis),2) AS Umsatz
FROM PLZ, Kunde, Auftrag, Auftragspos, Buch
WHERE PLZ.Plz=Kunde.Plz
AND Kunde.Nr=Auftrag.Kundennummer
AND Auftrag.Nr=Auftragspos.Auftragsnummer
AND Auftragspos.Buchnummer=Buch.Nr
GROUP BY Kunde.Nr, Kunde.Nachname, PLZ.Ort
HAVING Umsatz >= 100000
ORDER BY 4 DESC">
<input type="submit" value="Ausführen">
</form>
</html>
Umsätze je Region
SELECT PLZ.Region, ROUND(SUM(Auftragspos.Menge*Buch.Preis),2) AS Regionsumsatz FROM PLZ, Kunde, Auftrag, Auftragspos, Buch WHERE PLZ.Plz=Kunde.Plz AND Kunde.Nr=Auftrag.Kundennummer AND Auftrag.Nr=Auftragspos.Auftragsnummer AND Auftragspos.Buchnummer=Buch.Nr GROUP BY PLZ.Region ORDER BY 2 DESC
<html> <form method="post" action="http://sql.idv.edu/thema/work/sql.php" target="_blank"> <input type="hidden" name="select" value="SELECT PLZ.Region, ROUND(SUM(Auftragspos.Menge*Buch.Preis),2) AS Regionsumsatz FROM PLZ, Kunde, Auftrag, Auftragspos, Buch WHERE PLZ.Plz=Kunde.Plz AND Kunde.Nr=Auftrag.Kundennummer AND Auftrag.Nr=Auftragspos.Auftragsnummer AND Auftragspos.Buchnummer=Buch.Nr GROUP BY PLZ.Region ORDER BY 2 DESC"> <input type="submit" value="Ausführen"> </form> </html>