T-SQL Ninja #32

CUME_DIST

Was tut CUME_DIST? Angenommen ihr habt eine Tabelle mit bestimmten Werten und möchtet zu den einzelnen Werten wissen, wieviel Prozent der Datensätze unterhalb dem jeweiligen Wert liegen. Diese Art von Fragen kann die CUME_DIST-Funktion beantworten. CUME_DIST ist dabei kurz für „Cumulative Distribution“, auf Deutsch auch „Verteilungsfunktion“ und ist eine Funktion aus der Statistik, sie berechnet zu einem gegebenen […]

T-SQL Ninja #31

LEAD und LAG

Was sind LEAD und LAG? In der vergangenen Woche hattet ihr gesehen, wie ihr mit FIRST_VALUE und LAST_VALUE die ersten und letzten Zeilen in einem Abfragefenster geben lasst. Doch wie geht ihr vor, wenn ihr eine Zeile der Sales.Order-Tabelle mit der vorangegangenen Bestellung des Kunden vergleichen möchtet? Dann sind LEAD und LAG das Mittel der Wahl. LEAD gibt euch die nächste Zeile im Ergebnisfenster zurück, LAG liefert […]

T-SQL Ninja #30

FIRST_VALUE und LAST_VALUE

Was tun FIRST_VALUE und LAST_VALUE? Wie schon die in den Wochen 12 bis 14 vorgestellten ROW_NUMBER und RANK-Funktionen, gehören auch FIRST_VALUE und LAST_VALUE zu den Window-Funktionen. Das heißt sie sind Funktionen, die auf einer geordneten Menge von Zeilen in der Ergebnismenge operieren. Den Namen entsprechend geben die Funktionen die erste beziehungsweise letzte Zeile des Fensters zurück, auf dem sie operieren. Wie könnt […]

T-SQL Ninja #29

DROP IF EXISTS

Was ist DROP IF EXISTS? Ihr habt es in den vergangenen Monaten immer wieder gesehen und auch von der Syntax her ist die Funktionsweise von DROP IF EXISTS relativ eindeutig einzuordnen: Löschen eines Datenbankobjekts, wenn es denn existiert. Die Syntax dazu wurde im SQL Server 2016 eingeführt und erspart uns armen Ninjas einige eher unschöne Syntax-Klimmzüge der […]

T-SQL Ninja #28

SHOWPLAN

Was bedeutet SHOWPLAN? Wenn ihr euch schon immer mal gefragt habt, was der SQL Server eigentlich macht zwischen dem Zeitpunkt wo ihr mit Angstschweiß auf der Stirn im Azure Data Studio auf F5 gedrückt habt und dem Zeitpunkt wo euch Ergebnisse eurer Abfrage angezeigt werden, dann ist SHOWPLAN die Lösung für euch. Eine Warnung sei aber vorweg […]

T-SQL Ninja #27

Temporäre Objekte

Was sind temporäre Objekte? Grundsätzlich ermöglicht euch der SQL Server das Anlegen temporärer Objekte, mit denen ihr arbeiten könnt. Das ist praktisch, da ihr nicht unbedingt jedes Zwischenergebnis oder jede Hilfstabelle in eurer Datenbank persistieren möchtet, wenn ihr mit größeren Datenmengen arbeitet. Temporär bedeutet dabei, dass die Tabellen in der tempdb gespeichert werden und automatisch gelöscht werden. […]

T-SQL Ninja #26

Sequence

Was sind SEQUENCEs? Eine der wichtigsten SEQUENCEs hatten wir euch bereits im letzten Randori vorgestellt. Generell ist ein SEQUENCE-Objekt die Verallgemeinerung des IDENTITY-Attributs. Denn während das IDENTITY-Attribut dafür sorgt, dass jede neue Zeile eine neue Zahl zugewiesen bekommt, ist das SEQUENCE-Objekt ein Objekt, das Reihen von Zahlen erzeugt. Dabei ist es anders als das IDENTITY-Attribut nicht an ein anderes Datenbankobjekt (also eine […]

T-SQL Ninja #25

IDENTITY

Was ist IDENTITY? IDENTITY ist eine Eigenschaft für Spalten einer Tabelle. Sie kann verwendet werden, um Schlüssel zu erzeugen, also eindeutige, fortlaufende Werte in einer Spalte. Dabei garantiert der SQL Server, dass auch mehrere parallel laufende Transaktionen verschiedene Werte für die Spalte erhalten. Wie könnt ihr mit IDENTITY arbeiten? Die IDENTITY-Eigenschaft bekommt zwei Werte übergeben, den SEED, also […]

T-SQL Ninja #24

SELECT TOP 0 INTO

Was tut SELECT TOP 0 INTO? Gelegentlich kommt es vor, dass ihr eine leere Tabelle erzeugen möchtet, um die Daten einer Abfrage zu speichern. Ihr könnt nun natürlich aus allen Quelltabellen die Metadaten aller Spalten in der Abfrage prüfen und ein DDL Statement schreiben. Das kann aber bei Abfragen mit mehreren Joins und möglicherweise noch […]

T-SQL Ninja #23

TRIGGER

Was sind TRIGGER? Ihr habt im Dojo nun schon oft gehört, dass SQL immer dann effektiv ist, wenn ihr auf Datensätzen operiert und dass SQL eine Sprache ist, die Mengenoperationen ermöglicht. Deshalb sind auch die Möglichkeiten zur Ablaufsteuerung in SQL im Vergleich zu anderen Programmiersprachen eher dünn gesät, einige davon habt ihr bereits an dieser […]