T-SQL Ninja #38

CONCAT und CONCAT_WS

Was tun CONCAT und CONCAT_WS? Die CONCAT-Funktion ist eine Funktion aus dem Bereich der Zeichenketten-Manipulation. Ähnlich wie ihr es schon bei STUFF und STRING_AGG kennengelernt hattet, verknüpfen diese Funktionen Zeichenketten miteinander. Anders als STRING_AGG und STUFF in Kombination mit SELECT FOR XML, aggregieren CONCAT und CONCAT_WS allerdings keine Zeilen, das heißt die Einträge, die zusammengefasst werden sollen, müssen bereits in Spalten vorliegen. Wie verwendet man CONCAT und CONCAT_WS? Sehen […]

T-SQL Ninja #37

COALESCE (und ein wenig ISNULL)

Was tut COALESCE? Angenommen ihr habt in eurer Datenbank mehrere Spalten einer Tabelle, die alle NULL-Werte enthalten dürfen. Nun möchtet ihr den Wert der ersten Spalte, wenn dieser aber nicht vorhanden ist, dann den Wert der zweiten Spalte, wenn dieser nicht vorhanden ist, dann denn Wert der dritten Spalte und so weiter… Es gibt nun immer […]

T-SQL Ninja #36

STRING_AGG

Was ist STRING_AGG? In der letzten Woche hattet ihr gesehen, wie ihr mit STUFF und SELECT FOR XML eine kommaseparierte Liste aus den Zeilen einer Tabelle erzeugen könnt. Seit dem SQL Server 2017 ist das mit der Einführung der STRING_AGG-Funktion noch einfacher geworden. Die STRING_AGG-Funktion konkateniert Zeichenketten und fügt ein Trennzeichen ein. Was könnt ihr mit STRING_AGG so machen? Erinnern wir […]

T-SQL Ninja #35

STUFF

Was ist STUFF? STUFF ist eine Funktion zur Manipulation von Zeichenketten. Die Funktion „stopft“ eine Zeichenkette in eine andere, daher der recht bildlich zu verstehende Name. Traditionell gehört String-Manipulation nicht unbedingt zu den großen Stärken von relationalen Datenbanken und der SQL-Syntax, STUFF gehört zu den Funktionen aus diesem Bereich, die euch, wenn ihr sie beherrscht das Leben deutlich […]

T-SQL Ninja #34

PERCENTILE_CONT

Was ist PERCENTILE_CONT? Beim letzten Mal hattet ihr im Dojo mit der PERCENTILE_DISC-Funktion gearbeitet. Diese Funktion hat euch immer genau den Wert in eurer Tabelle zurückgegeben, bei der ein bestimmtes Quantil erreicht wurde. Das heißt, sie hat auf der diskreten Menge der Daten operiert und einen bestimmten Wert aus dieser Menge herausgesucht, doch wie sieht das […]

T-SQL Ninja #33

PERCENTILE_DISC

Was ist PERCENTILE_DISC? Wie schon die in der letzten Woche vorgestellte CUME_DIST-Funktion, gehört auch PERCENTILE_DISC zu den statistischen Funktionen. Sie wurde im SQL Server 2012 eingeführt und berechnet Quantile. Wenn ihr das 0,5-Quantil einer Menge (oder auch „Stichprobe“, wenn wir bei der in der Statistik üblichen Begrifflichkeit bleiben wollen) versteht man denjenigen Wert, bei dem die Hälfte aller […]

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 […]