Zephyrnet-Logo

Vereinfachtes SQL: Erstellen modularer und verständlicher Abfragen mit CTEs – KDnuggets

Datum:

Vereinfachtes SQL: Erstellen modularer und verständlicher Abfragen mit CTEs
Bild vom Autor 
 

In der Welt der Daten ist SQL immer noch die Verkehrssprache für die Interaktion mit Datenbanken. 

Noch heute gilt sie als eine der am häufigsten verwendeten Sprachen für den Umgang mit Daten und gilt nach wie vor als ein Muss für jeden guten Datenprofi. 

Allerdings weiß jeder, der mit komplexen SQL-Abfragen gearbeitet hat, dass diese schnell zu unhandlichen Ungeheuern werden können – schwer zu lesen, zu warten oder wiederzuverwenden. 

Aus diesem Grund reicht es heute nicht aus, SQL zu kennen, wir müssen gut darin sein, Abfragen zu erstellen. Und das ist tatsächlich eine Art Kunst. 

Hier kommen Common Table Expressions (CTEs) ins Spiel und verwandeln die Kunst des Abfrageschreibens in ein strukturierteres und zugänglicheres Handwerk.

Lassen Sie uns gemeinsam herausfinden, wie man lesbare und wiederverwendbare Abfragen codiert.

Wenn Sie sich fragen, was ein CTE ist, sind Sie im richtigen Artikel. 

Ein Common Table Expression (CTE) ist ein temporärer Ergebnissatz, der innerhalb des Ausführungsbereichs einer einzelnen SQL-Anweisung definiert wird. 

 

Dabei handelt es sich um temporale Tabellen, auf die innerhalb einer einzelnen Abfrage mehrfach verwiesen werden kann. Sie werden typischerweise zur Vereinfachung komplexer Verknüpfungen und Unterabfragen verwendet, mit dem ultimativen Ziel, die Lesbarkeit und Organisation von SQL-Code zu verbessern.

Daher sind sie ein leistungsstarkes Werkzeug, um komplexe Abfragen in einfachere Teile zu zerlegen.

Aus folgenden Gründen sollten Sie die Verwendung von CTEs in Betracht ziehen:

  • Modularität: Sie können komplexe Logik in lesbare Blöcke zerlegen.
  • Ablesbarkeit: Es erleichtert das Verständnis des Ablaufs von SQL-Abfragen.
  • Wiederverwendbarkeit: Auf CTEs kann in einer einzigen Abfrage mehrfach verwiesen werden, wodurch Wiederholungen vermieden werden.

Der Zauber beginnt mit der WITH-Klausel, die Ihrer Hauptabfrage vorangeht und verschiedene temporale Tabellen (CTEs) mit Aliasnamen definiert.

Daher müssen wir unsere Abfrage immer mit dem Befehl „WITH“ beginnen, um mit der Definition unserer eigenen CTEs zu beginnen. Durch die Verwendung von CTEs können wir jede komplexe SQL-Abfrage in Folgendes aufteilen: 

– Kleine temporäre Tabellen, die verwandte Variablen berechnen. 

– Eine Abschlusstabelle, die nur die Variablen verwendet, die wir als Ausgabe haben möchten.

Und das ist genau der MODULARE Ansatz, den wir in jedem Code wollen!

 

Vereinfachtes SQL: Erstellen modularer und verständlicher Abfragen mit CTEs
Bild vom Autor
 

Die Verwendung von CTEs in unseren Abfragen ermöglicht uns also:

– Führen Sie eine temporale Tabelle EINMAL aus und referenzieren Sie sie MEHRFACH.

– Verbessern Sie die Lesbarkeit und vereinfachen Sie komplexe Logik.

– Fördern Sie die Wiederverwendbarkeit von Code und den modularen Aufbau.

Um dies besser zu verstehen, können wir ein praktisches Beispiel für Airbnb-Inserate in Barcelona heranziehen. 

Stellen Sie sich vor, wir möchten die Leistung von Einträgen nach Stadtteilen analysieren und sie mit der Gesamtleistung der Stadt vergleichen. Sie müssten Informationen über Stadtteile, einzelne Wohnungen, Gastgeber und Preise zusammentragen.

Um dies zu veranschaulichen, verwenden wir die InsideAirbnb Tabelle von Barcelona, ​​die wie folgt aussieht: 

 

Vereinfachtes SQL: Erstellen modularer und verständlicher Abfragen mit CTEs
 

Ein naiver Ansatz könnte dazu führen, dass Sie verschachtelte Unterabfragen erstellen, die schnell zu einem Wartungsalbtraum wie dem folgenden werden:

Code nach Autor

Stattdessen können wir CTEs verwenden, um unsere Abfrage in logische Abschnitte zu unterteilen, von denen jeder ein Teil des Puzzles definiert.

  • Nachbarschaftsdaten: Erstellen Sie einen CTE, um Daten nach Nachbarschaft zusammenzufassen.
  • Informationen zur Wohnung und zum Gastgeber: Definieren Sie CTEs für Details zu Apartments und Hosts.
  • Stadtweite Kennzahlen: Ein weiterer CTE zum Sammeln von Statistiken auf Stadtebene zum Vergleich.
  • Endmontage: Kombinieren Sie die CTEs in einer abschließenden SELECT-Anweisung, um die Daten zusammenhängend darzustellen.

 

Vereinfachtes SQL: Erstellen modularer und verständlicher Abfragen mit CTEs
Bild vom Autor
 

Und wir würden mit der folgenden Abfrage enden:

Code nach Autor

Durch die Verwendung von CTEs verwandeln wir eine potenziell monströse Einzelabfrage in einen organisierten Satz von Datenmodulen. Dieser modulare Ansatz macht den SQL-Code intuitiver und anpassungsfähiger an Änderungen. 

Wenn neue Anforderungen auftreten, können Sie CTEs anpassen oder hinzufügen, ohne die gesamte Abfrage zu überarbeiten.

Sobald Sie Ihre CTEs festgelegt haben, können Sie diese für vergleichende Analysen wiederverwenden. Wenn Sie beispielsweise Nachbarschaftsdaten mit stadtweiten Metriken vergleichen möchten, können Sie Ihre CTEs in einer Reihe von JOIN-Vorgängen referenzieren. 

Dies spart nicht nur Zeit, sondern sorgt auch dafür, dass Ihr Code effizient bleibt, da Sie dieselbe Abfrage nicht zweimal wiederholen müssen!

CTEs sind ein Beweis für den Grundsatz, dass eine kleine Struktur beim Programmieren viel bewirken kann. Durch die Einführung von CTEs können Sie klarere, besser wartbare und wiederverwendbare SQL-Abfragen schreiben. 

Es rationalisiert den Abfrageentwicklungsprozess und erleichtert die Kommunikation komplexer Datenabruflogik mit anderen.

Denken Sie daran: Wenn Sie das nächste Mal mit dem Schreiben eines Multi-Join-Monsters mit verschachtelten Unterabfragen beginnen, denken Sie darüber nach, es mit CTEs aufzuschlüsseln. 

Ihr zukünftiges Ich – und jeder andere, der Ihren Code lesen könnte – wird es Ihnen danken.
 
 

Josef Ferrer ist Analytikingenieur aus Barcelona. Er hat einen Abschluss in Physikingenieurwesen und arbeitet derzeit im Bereich Data Science für die menschliche Mobilität. Er ist ein Teilzeit-Content-Creator, der sich auf Data Science und Technologie konzentriert. Sie können ihn unter kontaktieren LinkedIn, Twitter or Medium.

spot_img

Neueste Intelligenz

spot_img