FIRSTVALUE_-Fenster-Funktion - Amazon Redshift

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

FIRSTVALUE_-Fenster-Funktion

Bei einer geordneten Menge von Zeilen VALUE gibt FIRST _ den Wert des angegebenen Ausdrucks in Bezug auf die erste Zeile im Fensterrahmen zurück.

Informationen zur Auswahl der letzten Zeile im Rahmen finden Sie unter LASTFunktion VALUE „_ Fenster“.

Syntax

FIRST_VALUE( expression )[ IGNORE NULLS | RESPECT NULLS ] OVER ( [ PARTITION BY expr_list ] [ ORDER BY order_list frame_clause ] )

Argumente

expression

Die Zielspalte oder der Ausdruck, für die/den die Funktion ausgeführt wird.

IGNORE NULLS

Wenn diese Option mit FIRST _ verwendet wirdVALUE, gibt die Funktion den ersten Wert im Frame zurück, der dies nicht ist NULL (oder NULL wenn es alle Werte sindNULL).

RESPECT NULLS

Gibt an, dass Amazon Redshift bei der Festlegung der Zeile, die verwendet werden soll, Null-Werte berücksichtigen soll. RESPECTNULLSwird standardmäßig unterstützt, wenn Sie nichts angeben IGNORENULLS.

OVER

Führt die Fensterklauseln für die Funktion ein.

PARTITIONVON expr_list

Definiert das Fenster für die Funktion in Bezug auf mindestens einen Ausdruck.

ORDERVON order_list

Sortiert die Zeilen innerhalb der einzelnen Partitionen. Wenn keine PARTITION BY-Klausel angegeben ist, sortiert ORDER BY die gesamte Tabelle. Wenn Sie eine ORDER BY-Klausel angeben, müssen Sie auch eine frame_clause angeben.

Die Ergebnisse der VALUE Funktion FIRST _ hängen von der Reihenfolge der Daten ab. Die Ergebnisse sind in den folgenden Fällen nicht deterministisch:

  • Wenn keine ORDER BY-Klausel angegeben ist und eine Partition zwei verschiedene Werte für einen Ausdruck enthält

  • Wenn der Ausdruck unterschiedliche Werte ergibt, die demselben Wert in der ORDER BY-Liste entsprechen.

frame_clause

Wenn eine ORDER BY-Klausel für eine Aggregatfunktion verwendet wird, ist eine explizite Rahmenklausel erforderlich. Die Rahmenklausel gibt den Satz von Zeilen im Fenster einer Funktion genauer an, einschließlich oder ausschließlich Sätzen von Zeilen im geordneten Ergebnis. Die Frame-Klausel besteht aus dem ROWS Schlüsselwort und den zugehörigen Spezifizierern. Siehe Übersicht über die Syntax von Fensterfunktionen.

Rückgabetyp

Diese Funktionen unterstützen Ausdrücke, die einfache Amazon-Redshift-Datentypen verwenden. Der Rückgabetyp ist mit dem Datentyp von expression identisch.

Beispiele

In den folgenden Beispielen wird die VENUE Tabelle aus den TICKIT Beispieldaten verwendet. Weitere Informationen finden Sie unter Beispieldatenbank.

Im folgenden Beispiel wird die Sitzplatzkapazität für jeden Veranstaltungsort in der VENUE Tabelle zurückgegeben, wobei die Ergebnisse nach Kapazität (hoch bis niedrig) sortiert sind. Die VALUE Funktion FIRST _ wird verwendet, um den Namen des Veranstaltungsorts auszuwählen, der der ersten Zeile im Frame entspricht: in diesem Fall der Zeile mit der höchsten Anzahl von Sitzplätzen. Die Ergebnisse sind nach Bundesstaaten aufgeteilt. Wenn sich der VENUESTATE Wert ändert, wird ein neuer erster Wert ausgewählt. Der Fensterrahmen ist unbegrenzt. Daher wird für jede Zeile in jeder Partition derselbe erste Wert ausgewählt.

Im Fall von Kalifornien hat Qualcomm Stadium die größte Zahl von Sitzplätzen (70561). Daher ist dieser Name der erste Wert für alle Zeilen in der Partition CA.

select venuestate, venueseats, venuename, first_value(venuename) over(partition by venuestate order by venueseats desc rows between unbounded preceding and unbounded following) from (select * from venue where venueseats >0) order by venuestate; venuestate | venueseats | venuename | first_value -----------+------------+--------------------------------+------------------------------ CA | 70561 | Qualcomm Stadium | Qualcomm Stadium CA | 69843 | Monster Park | Qualcomm Stadium CA | 63026 | McAfee Coliseum | Qualcomm Stadium CA | 56000 | Dodger Stadium | Qualcomm Stadium CA | 45050 | Angel Stadium of Anaheim | Qualcomm Stadium CA | 42445 | PETCO Park | Qualcomm Stadium CA | 41503 | AT&T Park | Qualcomm Stadium CA | 22000 | Shoreline Amphitheatre | Qualcomm Stadium CO | 76125 | INVESCO Field | INVESCO Field CO | 50445 | Coors Field | INVESCO Field DC | 41888 | Nationals Park | Nationals Park FL | 74916 | Dolphin Stadium | Dolphin Stadium FL | 73800 | Jacksonville Municipal Stadium | Dolphin Stadium FL | 65647 | Raymond James Stadium | Dolphin Stadium FL | 36048 | Tropicana Field | Dolphin Stadium ...

Das folgende Beispiel zeigt die Verwendung der IGNORE NULLS Option und basiert auf dem Hinzufügen einer neuen Zeile zur VENUE Tabelle:

insert into venue values(2000,null,'Stanford','CA',90000);

Diese neue Zeile enthält einen NULL Wert für die VENUENAME Spalte. Wiederholen Sie nun die VALUE Abfrage FIRST _, die weiter oben in diesem Abschnitt gezeigt wurde:

select venuestate, venueseats, venuename, first_value(venuename) over(partition by venuestate order by venueseats desc rows between unbounded preceding and unbounded following) from (select * from venue where venueseats >0) order by venuestate; venuestate | venueseats | venuename | first_value -----------+------------+----------------------------+------------- CA | 90000 | NULL | NULL CA | 70561 | Qualcomm Stadium | NULL CA | 69843 | Monster Park | NULL ...

Da die neue Zeile den höchsten VENUESEATS Wert (90000) enthält und dieser Wert VENUENAME istNULL, kehrt die VALUE Funktion FIRST _ NULL für die CA Partition zurück. Um Zeilen wie diese bei der Funktionsauswertung zu ignorieren, fügen Sie dem Funktionsargument die IGNORE NULLS Option hinzu:

select venuestate, venueseats, venuename, first_value(venuename) ignore nulls over(partition by venuestate order by venueseats desc rows between unbounded preceding and unbounded following) from (select * from venue where venuestate='CA') order by venuestate; venuestate | venueseats | venuename | first_value ------------+------------+----------------------------+------------------ CA | 90000 | NULL | Qualcomm Stadium CA | 70561 | Qualcomm Stadium | Qualcomm Stadium CA | 69843 | Monster Park | Qualcomm Stadium ...