Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

SQL Grundkurs 1: Die Sprache erlernen

Nach mehreren Spalten gruppieren

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Wollen Sie die Umsätze Ihrer Kunden je Kunde bilden und nicht je "Familie"? - Dann genügt eine Gruppierung nach Nachname nicht mehr. Sie müssen zumindest den Vornamen mit in die Gruppierung aufnehmen, noch besser ist es, wenn Sie auch noch die Kundennummer ergänzen. Dann ist die Gruppierung eindeutig. Dieses Video zeigt, wie Sie nach mehreren Spalten gruppieren.

Transkript

Wie Sie für das Kopieren mehr als eine Spalte verwenden, zeige ich Ihnen in diesem Video. Unter Umständen ist es sinnvoll oder erforderlich, dass Sie nach mehreren Spalten kopieren. Ich möchte Ihnen das mit folgendem Beispiel erläutern: Wir möchten eruieren, wieviele Interessen jeder unserer Kunden hat. Zur Erinnerung ein Blick in unser Datendiagramm: Wir haben hier unsere Kunden, und die Interessenszuordnung passiert über die Tabelle "Kundeninteresse", D.h. wir müssen diese zwei "joinen", um zu sehen, wieviele Einträge es in der Kundeninteressenstabelle für einen Mitarbeiter gibt. Damit haben wir die Anzahl seiner oder ihrer Interessen. Ich beginne meinen Joint mit der Kundentabelle und setze mit der Tabelle "Kundeninteresse" fort, und "joine" die Beiden über die Kundennummer. Ich möchte den Nachnamen und den Vornamen des jeweiligen Kunden sehen. Also gebe ich beide in die SELECT-Klausel. Außerdem, möchte ich wissen, wieviele Interessen sie haben, also zähle ich z.B. die Inhalte der Spalte "i.intcode". "S", "Interessen". Natürlich muss ich jetzt auch gleich eine "GROUP BY"-Klausel ergänzen, da ich hier zwei Spalten ohne Gruppenfunktion und eine mit bereits in der SELECT-Klausel habe, sonst bekomme ich einen Fehler, wenn ich diese Anweisung ausführe. Also ergänze ich eine GROUP BY-Klausel. Nun ist es nicht ausreichend nach dem Nachnamen zu gruppieren, weil ich ja auch den Vornamen hier in meiner SELECT-Klausel ohne Gruppenfunktion angeführt habe. Deshalb muss ich auch zusätzlich nach dem Vornamen gruppieren. Würde ich das außerdem nicht tun, würde ich ja alle Kunden zusammenfassen, die denselben Nachnamen haben, D.h. die Anzahl der Interessen würden nicht auf den einzelnen Kunden sondern gemeinsam für Kunden berechnet haben, die denselben Nachnamen haben. Das wollen wir ja nicht. Deshalb müssten wir hier jetzt auch in der GROUP BY-Klausel nach zwei Gesichtspunkten gruppieren. Und das ist jetzt nicht nur eine technische Anforderung, weil wir zwei Spalten ohne Gruppenfunktion in der SELECT-Klausel haben, sondern auch eine inhaltliche Anforderung, eben damit wir nicht unterschiedliche Kunden mit demselben Nachnamen zusammenfassen. Zusätzlich sortiere ich auch noch nach Nachnamen und Vornamen, damit wir eine saubere Ergebnisdarstellung erhalten. Ich führe die Anweisung aus, und nun sehen wir, dass Gerald Bogner ein Interesse hat, Petra Deutschmann hat auch eins, und wenn wir hier weiter hinunter gehen sehen wir, Sabina Kilian hat drei Interessen. Dann gibt es manche, die haben zwei Interessen. Um auch jene anzuzeigen, die kein Interesse haben, müssten wir hier einen "Outerjoin" realisieren. Unter Umständen kann es hier, in diesem Beispiel, sinnvoll sein, auch noch nach einem dritten Kriterium zu kopieren, nämlich der Kundennummer. Dies ist dann von Bedeutung, wenn wir damit rechnen müssen, dass es gleichnamige Kunden gibt, weil wir eine so umfangreiche Kundenkartei haben. Denn, so wie das Beispiel jetzt hier sich darstellt, würden Kunden, die den gleichen Nachnamen und den gleichen Vornamen haben, auch zusammengefasst werden, auch wenn sie nicht derselbe Kunde sind. Deshalb könnten wir hier sicherheitshalber auch noch als drittes Kriterium die Kundennummer mit angeben. Ob Sie dann die Kundennummer zusätzlich hier auch anzeigen möchten im Ergebnis, das bleibt Ihnen dann überlassen, das ist Geschmacksache. Sinnvollerweise könnte man es vielleicht auch tun. Ob Sie dieselbe Reihenfolge hier in der SELECT-Klausel wie hier in der GROUP BY-Klausel verwenden, ist Nebensache. Denn es gilt nur, dass in allen dreien dasselbe enthalten ist, dann wird zusammengefasst. In welcher Reihenfolge diese Betrachtung stattfindet, spielt keine Rolle. Mit dieser Variante gehen wir sicher, dass wir keine ungültigen Zusammenfassungen machen, sprich dass wir keine Kunden zusammenfassen, die eigentlich nicht derselbe Kunde sind. In der Praxis kann es aber auch vorkommen, dass wir nach mehreren Spalten gruppieren müssen, weil es ein technisches Erfordernis ist. Zum Beispiel, Folgendes: Wir haben hier diese Anweisung, die uns eruiert, wieviele Mitarbeiter es pro Abteilung gibt. Wenn wir jetzt hier z.B. zusätzlich den Langnamen der Abteilung mit anzeigen möchten, müssten wir hier einen Joint ergänzen, D.h. ich baue hier zusätzlich noch die Tabelle "Abteilungen" ein, "innerjoin", "wavi.abteilung A on P.upTLG=A.Abteilungsnummer". Wenn wir jetzt hier zusätzlich den Langtext hier anzeigen, nämlich "A.Text S Abteilung", dann bekommen wir wieder einen Fehler, wenn wir diesen Text hier nicht in die GROUP BY-Klausel mit aufnehmen. Deshalb müssen wir diese Spalte hier eintragen, oder ihr eine Gruppenfunktion verpassen. Wir tragen sie hier zusätzlich ein, wenn wir es sauber machen, ergänzen wir natürlich auch hier bei "P.Abteilung" hier noch den Tabellen-Präfix. Die Zusammensetzung der Gruppen verändert sich natürlich nicht in diesem Beispiel dadurch, dass wir eine weitere Spalte in die GROUP BY-Klausel aufgenommen haben, da wir ja für jedes Abteilungskürzel immer denselben Langtext als Abteilungsnamen angezeigt bekommen. Es ist lediglich ein technisches Erfordernis also, um diesen Text hier ohne Gruppenfunktion anzuzeigen, dass wir ihn mit aufnehmen in die GROUP BY-Klausel. Die Zusammensetzung ändert sich nicht so wie im vorigen Beispiel. So ganz nebenbei, wenn wir uns das Ergebnis dieser Abfrage ansehen, was ist die Kernaussage, die wichtigste Aussage? Wenn man eine böse Zunge hat, könnte man sagen, die Geschäftsleitung ist proportional überbesetzt. Ich fasse also nochmals zusammen: Wenn Sie mehrere Spalten in der SELECT-Klausel ohne Gruppenfunktion verwenden, müssen Sie auch in der GROUP BY-Klausel mehrere Spalten angeben. Geben Sie auch dann mehrere Spalten in der GROUP BY-Klausel an, wenn Sie die Eindeutigkeit für ihre Zusammenfassung ohne diese Spalten nicht zustande bekommen.

SQL Grundkurs 1: Die Sprache erlernen

Arbeiten Sie sich in die Grundlagen der Datenbanksprache SQL am Beispiel von Microsoft SQL Server, Oracle und MySQL ein und lassen Sie sich die praktische Nutzung erklären.

14 Std. 40 min (112 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!