Die Fensterfunktion LEAD - 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.

Die Fensterfunktion LEAD

Die Fensterfunktion LEAD gibt die Werte für eine Zeile in einem bestimmten Offset unterhalb (nach) der aktuellen Zeile in der Partition zurück.

Syntax

LEAD (value_expr [, offset ]) [ IGNORE NULLS | RESPECT NULLS ] OVER ( [ PARTITION BY window_partition ] ORDER BY window_ordering )

Argumente

value_expr

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

offset

Ein optionaler Parameter, der die Anzahl der Zeilen unterhalb der aktuellen Zeile angibt, für die Werte zurückgegeben werden sollen. Beim Offset kann es sich um eine ganzzahlige Konstante oder um einen Ausdruck handeln, der zu einer Ganzzahl ausgewertet wird. Wenn Sie keinen Offset angeben, verwendet Amazon Redshift 1 als Standardwert. Ein Offset von 0 gibt die aktuelle Zeile an.

IGNORE NULLS

Eine optionale Spezifikation, die angibt, dass Amazon Redshift bei der Festlegung der Zeile, die verwendet werden soll, Null-Werte überspringen soll. Wenn IGNORE NULLS nicht angegeben wird, werden Null-Werte berücksichtigt.

Anmerkung

Sie können einen NVL- oder COALESCE-Ausdruck verwenden, um die Null-Werte durch einen anderen Wert zu ersetzen. Weitere Informationen finden Sie unter NVL- und COALESCE-Funktionen.

RESPECT NULLS

Gibt an, dass Amazon Redshift bei der Festlegung der Zeile, die verwendet werden soll, Null-Werte berücksichtigen soll. Wenn Sie IGNORE NULLS nicht angeben, wird RESPECT NULLS standardmäßig unterstützt.

OVER

Gibt die Fensterpartitionierung und -anordnung an. Die OVER-Klausel darf keine Fensterrahmenspezifikation enthalten.

PARTITION BY window_partition

Ein optionales Argument, das den Datensatzbereich für die einzelnen Gruppen in der OVER-Klausel festlegt.

ORDER BY window_ordering

Sortiert die Zeilen innerhalb der einzelnen Partitionen.

Die Fensterfunktion LEAD unterstützt Ausdrücke, die einen der Amazon-Redshift-Datentypen verwenden. Der Rückgabetyp ist mit dem Typ von value_expr identisch.

Beispiele

Im folgenden Beispiel wird die Provision für Veranstaltungen in der Tabelle SALES angegeben, für die am 1. und 2. Januar 2008 Tickets verkauft wurden, sowie die Provision, die für verkaufte Tickets im anschließenden Verkauf gezahlt wurden. In diesem Beispiel wird die Musterdatenbank TICKIT verwendet. Weitere Informationen finden Sie unter Beispieldatenbank.

SELECT eventid, commission, saletime, LEAD(commission, 1) over ( ORDER BY saletime ) AS next_comm FROM sales WHERE saletime BETWEEN '2008-01-09 00:00:00' AND '2008-01-10 12:59:59' LIMIT 10; +---------+------------+---------------------+-----------+ | eventid | commission | saletime | next_comm | +---------+------------+---------------------+-----------+ | 1664 | 13.2 | 2008-01-09 01:00:21 | 69.6 | | 184 | 69.6 | 2008-01-09 01:00:36 | 116.1 | | 6870 | 116.1 | 2008-01-09 01:02:37 | 11.1 | | 3718 | 11.1 | 2008-01-09 01:05:19 | 205.5 | | 6772 | 205.5 | 2008-01-09 01:14:04 | 38.4 | | 3074 | 38.4 | 2008-01-09 01:26:50 | 209.4 | | 5254 | 209.4 | 2008-01-09 01:29:16 | 26.4 | | 3724 | 26.4 | 2008-01-09 01:40:09 | 57.6 | | 5303 | 57.6 | 2008-01-09 01:40:21 | 51.6 | | 3678 | 51.6 | 2008-01-09 01:42:54 | 43.8 | +---------+------------+---------------------+-----------+

Das folgende Beispiel zeigt die maximale Differenz zwischen der Provision für Veranstaltungen in der Tabelle SALES für und der Provision, die für den Ticketverkauf für den nachfolgenden Verkauf derselben Veranstaltung gezahlt wurde. Dieses Beispiel zeigt, wie LEAD mit einer GROUP BY-Klausel verwendet wird. Da Fensterfunktionen in Aggregatklauseln nicht zulässig sind, verwendet dieses Beispiel eine Unterabfrage. In diesem Beispiel wird die Musterdatenbank TICKIT verwendet. Weitere Informationen finden Sie unter Beispieldatenbank.

SELECT eventid, eventname, max(next_comm_diff) as max_commission_difference FROM ( SELECT sales.eventid, eventname, commission - LEAD(commission, 1) over (ORDER BY sales.eventid, saletime) AS next_comm_diff FROM sales JOIN event ON sales.eventid = event.eventid ) GROUP BY eventid, eventname ORDER BY eventid LIMIT 10 | eventid | eventname | max_commission_difference | +---------+-----------------------------+---------------------------+ | 1 | Gotterdammerung | 7.95 | | 2 | Boris Godunov | 227.85 | | 3 | Salome | 1350.9 | | 4 | La Cenerentola (Cinderella) | 790.05 | | 5 | Il Trovatore | 214.05 | | 6 | L Elisir d Amore | 510.9 | | 7 | Doctor Atomic | 180.6 | | 9 | The Fly | 147 | | 10 | Rigoletto | 186.6 | +---------+-----------------------------+---------------------------+