Mode Blog (Deutsch)

Hier bei Mode legen wir großen Wert darauf, gutes, sauberes SQL zu schreiben. Als kollaboratives Team ist es wichtig, dass unsere Anfragen von unseren Teamkollegen leicht gelesen und verstanden werden können. Eine Konvention, die wir eingeführt haben, ist die Verwendung von common table expressions (CTEs).

Was sind gängige Tabellenausdrücke?

Allgemeine Tabellenausdrücke sind temporäre benannte Ergebnismengen, die für nur eine Abfrage vorhanden sind. Sie beginnen mit einer WITH , gefolgt von einem Ausdrucksnamen und einer Abfrage, die die Ergebnismenge definiert., Mit dieser Konvention können Sie mehrere Ausdrücke innerhalb einer Abfrage definieren. Einmal definiert, können diese Ausdrücke während des gesamten Rests Ihrer Abfrage wiederholt referenziert werden (genau wie Sie auf permanente Datenbanktabellen oder-ansichten verweisen würden).,

Während allgemeine Tabellenausdrücke ähnlich wie Unterabfragen funktionieren, haben sie mehrere Vorteile, darunter:

  • Die Möglichkeit, dieselbe temporäre Ergebnismenge wiederholt über die Abfrage zu referenzieren
  • Verbesserte Lesbarkeit für die Zusammenarbeit und das Debuggen
  • Bessere Sichtbarkeit in häufig verwendeten Ergebnismengen, die gute Kandidaten sind, um permanente Tabellen/Ansichten zu werden

Ein praktisches Beispiel

Nehmen wir ein Beispiel mit Daten im Demo-Schema von Mode ein öffentliches Lager, an dem eine hypothetische Papierfirma beteiligt ist., Angenommen, Sie arbeiten für dieses Unternehmen und möchten große Kunden erreichen, die schlechte Versanderfahrungen gemacht haben. Nachdem Sie mit dem Verkaufsteam gesprochen haben, entscheiden Sie sich, „große Kunden“ als jedes Konto mit einem lebenslangen Umsatz von 100.000 USD oder mehr zu definieren, und Sie definieren schlechte Versanderfahrungen als jedes Konto, das mehrere Bestellungen mit fehlgeschlagenen Sendungen hatte.

Ein optimierter Ansatz zur Identifizierung von Konten, die beide Kriterien erfüllen, besteht darin, wie in diesem Beispiel einen gemeinsamen Tabellenausdruck zu verwenden.,

Brechen Sie ab

  • MIT: WITH notwendig ist, um kick-off Ihre common table expression query.
 WITH 
  • Ausdruck 1: account_failed_shipments. Unser erster Ausdruck gibt die Anzahl fehlgeschlagener Sendungen für alle Konten zurück, auf denen mindestens eines vorhanden war. Syntaktisch beginnen wir mit der Benennung des Ausdrucks im Format expression_name as (. Wir können jetzt auf diesen Namen verweisen, als wäre er während des gesamten Rests der Abfrage eine Tabelle in unserer Datenbank., Was folgt, ist eine typische Abfrage, die in diesem Beispiel fehlgeschlagene Sendungen nach Konto gruppiert. Abschließend schließen wir den Ausdruck mit einer geschlossenen Klammer ab. Beachten Sie, dass auf die geschlossene Klammer ein Komma folgt, da dies nicht der letzte Ausdruck in unserer Abfrage ist.
  • Ausdruck 2: account_lifetime_revenue. Unser zweiter Ausdruck gibt die Gesamtsumme der Einnahmen nach Konto zurück. Es ist in der Struktur identisch mit Ausdruck 1, mit einer Ausnahme-da es der letzte Ausdruck in unserer Abfrage ist, folgt auf die geschlossene Klammer kein Komma.,
 account_lifetime_revenue as ( SELECT o.account_id, SUM(o.total_amt_usd) as amount FROM demo.orders o GROUP BY 1 )
  • Letzte Abfrage: Zuletzt haben wir die letzte Abfrage selbst, die unsere Ergebnismenge zurückgibt. Dies sollte jeder herkömmlichen Abfrage sehr ähnlich aussehen, mit Ausnahme der letzten beiden JOINs, die auf Ausdrücke verweisen, die wir zuvor definiert haben, im Gegensatz zu Tabellen in unserer Datenbank.

Gemeinsame Tabellenausdrücke helfen uns, effizienter zu arbeiten

Gemeinsame Tabellenausdrücke sind eine sehr wertvolle Methode zum Unterteilen komplexer Abfragen, insbesondere wenn sie Kombinationen mehrerer Konzepte beinhalten., Da jeder Ausdruck klar benannt und definiert ist, ist das Debuggen viel einfacher (insbesondere wenn Sie Highlight-to-Run im Modus verwenden).

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.