ProgrammierungBI/Reporting Analyst

Wie funktioniert und wofür wird WITH TIES in SQL bei der Sortierung und Auswahl einer begrenzten Anzahl von Zeilen verwendet, und welche Fehler treten bei falschem Verständnis dieser Option auf?

Bestehen Sie Vorstellungsgespräche mit dem Hintsage-KI-Assistenten

Antwort.

In SQL wird die Option WITH TIES zusammen mit ORDER BY und der Begrenzungsanweisung (TOP oder FETCH FIRST ... ROWS ONLY) verwendet. Sie ermöglicht es, nicht nur strikt die ersten N Zeilen zurückzugeben, sondern auch alle Zeilen, bei denen die Werte im Sortierfeld mit der letzten (N-ten) Zeile übereinstimmen.

Wann ist das notwendig: bei Analysen, Ranglisten, Leaderboards, wenn es wichtig ist, "Unentschieden" oder Gruppen mit derselben Bewertung einzuschließen.

Beispiel (SQL Server):

SELECT TOP 3 WITH TIES * FROM Sales ORDER BY Amount DESC;

Wenn der 3. und 4. Platz denselben Verkaufsbetrag haben, werden beide Zeilen zurückgegeben.

In PostgreSQL:

SELECT * FROM Sales ORDER BY Amount DESC FETCH FIRST 3 ROWS WITH TIES;

Wichtig: funktioniert nur mit ORDER BY, andernfalls ist das Ergebnis unvorhersehbar.

Fangfrage.

Was unterscheidet einfach TOP N/LIMIT von der Verwendung von WITH TIES?

Eine häufige falsche Antwort: "WITH TIES limitiert einfach die Zeilen, es ist ein Synonym".

Richtige Antwort:

  • TOP N/LIMIT — gibt genau N Zeilen zurück, selbst wenn die nächsten den gleichen Sortierwert haben.
  • WITH TIES — fügt alle Zeilen hinzu, bei denen das Sortierfeld mit der letzten (N-ten) übereinstimmt.

Beispiel:

-- Wählen Sie die 2 besten Ergebnisse, aber wenn es ein "Unentschieden" gibt – auch diese: SELECT TOP 2 WITH TIES Name, Score FROM Results ORDER BY Score DESC;

Beispiele für reale Fehler aufgrund von Unkenntnis der Feinheiten des Themas.


Geschichte

Projekt: Wettbewerb um Studentenrankings. Fehler: Verwendeten einfach LIMIT 3, und mehrere Studenten mit derselben Punktzahl wurden außerhalb der Liste der Gewinner angezeigt – echte Preisträger wurden fälschlicherweise "abgeschnitten".


Geschichte

Projekt: E-Commerce-Analyse. Fehler: Wünschten, die Top-5 der beliebten Produkte zu zeigen, aber bei identischen SKUs in den Verkäufen wurden nur die ersten 5 angezeigt, und später wurde bei der Prüfung festgestellt, dass einige Hits nicht im Bericht enthalten waren.


Geschichte

Projekt: Berichterstattung über Verkaufszahlen von Filialen. Fehler: Der Kunde erwartete, alle Führenden bei gleichen Ergebnissen zu sehen, aber der Entwickler wusste nichts von WITH TIES – die Ergebnisse waren inkorrekt, der Kunde erhob eine Beschwerde über die Datenqualität.