Skalare Unterabfragen - 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.

Skalare Unterabfragen

Eine skalare Unterabfrage ist eine reguläre SELECT-Abfrage, die in Klammern eingefasst ist, und die genau einen Wert zurückgibt, nämlich eine Zeile mit einer Spalte. Wenn die Abfrage ausgeführt wird, kann der Rückgabewert in der äußeren Abfrage verwendet werden. Wenn die Unterabfrage keine Zeilen zurückgibt, ist der Wert der Unterabfrage „Null“. Wenn mehr als eine Zeile zurückgegeben wird, gibt Amazon Redshift einen Fehler zurück. Die Unterabfrage kann auf Variablen aus der übergeordneten Abfrage verweisen, die beim einem Aufruf der Unterabfrage wie eine Konstante behandelt werden.

Sie können skalare Unterabfragen in den meisten Anweisungen verwenden, die einen Ausdruck als Argument zu sich nehmen. In den folgenden Fällen sind skalare Unterabfragen hingegen keine gültigen Ausdrücke:

  • Als Standardwerte für Ausdrücke

  • In GROUP BY- und HAVING-Klauseln

Beispiel

Die folgende Unterabfrage berechnet den durchschnittlichen Preis pro Verkauf über das gesamte Jahr 2008. Anschließend verwendet die äußere Abfrage diesen Wert in der Ausgabe, um einen Vergleich des durchschnittlichen Preises für die Verkäufe pro Quartal durchzuführen:

select qtr, avg(pricepaid) as avg_saleprice_per_qtr, (select avg(pricepaid) from sales join date on sales.dateid=date.dateid where year = 2008) as avg_saleprice_yearly from sales join date on sales.dateid=date.dateid where year = 2008 group by qtr order by qtr; qtr | avg_saleprice_per_qtr | avg_saleprice_yearly -------+-----------------------+---------------------- 1 | 647.64 | 642.28 2 | 646.86 | 642.28 3 | 636.79 | 642.28 4 | 638.26 | 642.28 (4 rows)