So verwenden Limited SQL FETCH

Immer, wenn der ISO / IEC-Standard SQL geändert wird, ist es normalerweise die Fähigkeiten der Sprache zu erweitern. Das ist eine gute Sache. Aber manchmal, wenn Sie machen eine solche Änderung, die Sie nicht alle möglichen Folgen zu antizipieren. Dies geschah durch Zugabe von begrenzten HOLEN Fähigkeit in SQL: 2008.

Die Idee der begrenzten HOLEN ist, dass obwohl ein WÄHLEN Erklärung kann eine unbestimmte Anzahl von Zeilen zurück, vielleicht interessieren Sie sich nur über die Top drei oder vielleicht die Top Ten. Nach dieser Idee, SQL: 2008 hinzugefügt Syntax im folgenden Beispiel gezeigt:

SELECT Händler, AVG (TotalSale) FROM Verkaeufer BY SalespersonORDER von AVG (TotalSale) DESCFETCH ERSTEN 3 ROWS nur-

Das sieht gut aus. Sie wollen sehen, wer Ihre drei Verkäufer in Bezug auf diejenigen, die meist hochpreisige Produkte verkaufen. Jedoch gibt es ein kleines Problem mit diesem. Was passiert, wenn drei Personen mit dem gleichen durchschnittlichen Gesamtverkaufs gebunden, unter den Top zwei Verkäufern? Nur einer dieser drei zurückgegeben. Welcher? Es ist unbestimmt.

Die Unbestimmtheit ist unerträglich jeder sich selbst achtet Datenbank Person so dass diese Situation in SQL korrigiert wurde: 2011. Neue Syntax Verbindungen zu umfassen hinzugefügt, die auf diese Weise:

SELECT Händler, AVG (TotalSale) FROM Verkaeufer BY SalespersonORDER von AVG (TotalSale) DESCFETCH ERSTEN 3 ROWS MIT Ties-

Nun wird das Ergebnis vollständig bestimmt: Bei Gleichstand ist, erhalten Sie alle gebunden Reihen. Nach wie vor verlassen aus, wenn Sie die WITH TIES Modifikator, ist das Ergebnis unbestimmt.

Ein paar zusätzliche Verbesserungen wurden auf die begrenzte gemacht HOLEN Fähigkeit in SQL: 2011.

Zunächst werden Prozentsätze gehandhabt, als auch nur eine bestimmte Anzahl von Zeilen. Betrachten Sie das folgende Beispiel:

SELECT Händler, AVG (TotalSale) FROM Verkaeufer BY SalespersonORDER von AVG (TotalSale) DESCFETCH FIRST 10 PROZENT ROWS nur-

Es ist denkbar, dass es möglicherweise ein Problem mit Verbindungen sein, wenn sie mit Prozentsätzen zu tun, so wie es mit einer einfachen Anzahl von Datensätzen ist, so dass die WITH TIES Syntax kann auch hier verwendet werden. Sie können Bindungen enthalten oder nicht, je nachdem, was in einer bestimmten Situation wollen.

Zweitens nehme an, Sie nicht unter den ersten drei oder die besten zehn Prozent wollen, sondern den zweiten drei oder zweiten zehn Prozent wollen? Vielleicht möchten Sie direkt zu einem gewissen Punkt tief in der Ergebnismenge zu überspringen. SQL: 2011 deckt auch diese Situation. Der Code wäre ähnlich wie folgt aus:

SELECT Händler, AVG (TotalSale) FROM Verkaeufer BY SalespersonORDER von AVG (TotalSale) DESCOFFSET 3 ROWSFETCH NEXT-3-reihigen nur-

Das OFFSET Stichwort sagt, wie viele Zeilen vor dem Abruf zu überspringen. Die NEXT Schlüsselwort gibt an, dass die Zeilen abgerufen werden, sind diejenigen unmittelbar nach dem Offset. Jetzt die Verkäufer mit dem vierten, fünften und sechsten höchsten durchschnittlichen Verkaufs insgesamt zurückgegeben.

Wie Sie sehen können, ohne dass das zu sehen, WITH TIES Syntax, gibt es noch ein Problem Unbestimmtheit. Wenn der dritte, vierte und fünfte Verkäufer gebunden sind, ist es unbestimmt, die beiden werden in diesem zweiten Ansatz aufgenommen werden und welche man wird in der ersten Charge aufgenommen.

Es kann am besten sein, um die begrenzte FETCH Fähigkeit zu vermeiden, mit. Es ist zu wahrscheinlich irreführende Ergebnisse zu liefern.

Menü