SQL-Beispielvariation: Unterschied zwischen den Versionen

Aus IV1
Hans4mido (Diskussion | Beiträge)
Hans4mido (Diskussion | Beiträge)
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 einer Trainingsdatenbank installiert.}}
{{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 Region==
==Eingrenzung der Umsätze je Kunde auf Werte >= 100.000==


<pre>SELECT PLZ.Region, ROUND(SUM(Auftragspos.Menge*Buch.Preis),2) AS Regionsumsatz
<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.Region
AND Kunde.Nr=Auftrag.Kundennummer
ORDER BY 2 DESC</pre>
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.Region, ROUND(SUM(Auftragspos.Menge*Buch.Preis),2) AS Regionsumsatz
<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.Region
GROUP BY Kunde.Nr, Kunde.Nachname, PLZ.Ort
ORDER BY 2 DESC">
HAVING Umsatz >= 100000
ORDER BY 4 DESC">
<input type="submit" value="Ausführen">
<input type="submit" value="Ausführen">
</form>
</form>
</html>
</html>


==Eingrenzung der Umsätze je Region auf Werte >= 100.000==
==Umsätze je Region==


<pre>SELECT Kunde.Nr, Kunde.Nachname, PLZ.Ort, ROUND(SUM(Auftragspos.Menge*Buch.Preis),2) AS Umsatz
<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 BYKunde.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 Kunde.Nr, Kunde.Nachname, PLZ.Ort, ROUND(SUM(Auftragspos.Menge*Buch.Preis),2) AS Umsatz
<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 Kunde.Nr, Kunde.Nachname, PLZ.Ort
GROUP BY PLZ.Region
HAVING Umsatz >= 100000
ORDER BY 2 DESC">
ORDER BY 4 DESC">
<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>