SQL-Funktion erklären

Ein SQL-Code-Snippet erklären.

Sie können ein Modell direkt abfragen und die zurückgegebenen Ergebnisse testen, wenn Sie verschiedene Parameterwerte mit der Cloud Console oder durch direkten Aufruf der Vertex AI API verwenden.

Freiform-Prompt

Erklären Sie die Funktion von CROSS APPLY im folgenden Code:

SELECT customer.CustomerId, customer.CustomerName, ord.*
FROM customers customer
CROSS APPLY
(
    SELECT SUM(order.quantity) as TotalQuantity
    FROM orders order
    WHERE order.CustomerId = customer.CustomerId
) ord;

Antwort

Die Funktion CROSS APPLY in diesem SQL-Code fungiert als korrelierte Unterabfrage, die die Ergebnisse der Unterabfrage auf jede Zeile in der Tabelle customers anwendet. Aufschlüsselung:

  1. Äußere Abfrage: Die Hauptabfrage wählt CustomerId und CustomerName aus der Tabelle customers mit dem Alias customer aus.

  2. CROSS APPLY: Dieses Keyword führt die korrelierte Unterabfrage ein. Sie weist die Datenbank an, die Unterabfrage für jede Zeile in der Tabelle customers auszuführen.

  3. Unterabfrage: Die Unterabfrage berechnet den TotalQuantity für jeden Kunden so:

  4. Auswählen der Summe von quantity aus der Tabelle orders mit dem Alias order.

  5. Filterung der Tabelle orders basierend auf dem CustomerId aus der aktuellen Zeile in der Tabelle customers.

  6. Ergebnis: CROSS APPLY gibt für jeden Kunden eine einzelne Zeile zurück, die CustomerId, CustomerName und die berechnete TotalQuantity enthält.

Im Wesentlichen bedeutet dies: Mit CROSS APPLY können Sie dynamisch eine neue Spalte (TotalQuantity) für jeden Kunden anhand der Ergebnisse der Unterabfrage generieren, wodurch die Tabelle customers mit den aggregierten Bestelldaten effektiv verknüpft wird.

Beispiel:

Angenommen, Sie haben die folgenden Daten:

Kunden:

CustomerId CustomerName
1 Max Muster
2 Melanie Muster

Bestellungen:

OrderId CustomerId Menge
1 1 5
2 1 3
3 2 2

Die Abfrage würde das folgende Ergebnis zurückgeben:

CustomerId CustomerName TotalQuantity
1 Max Muster 8
2 Melanie Muster 2

Hinweis:

  • CROSS APPLY entspricht OUTER APPLY, aber OUTER APPLY gibt eine Zeile zurück, auch wenn die Unterabfrage keine Ergebnisse zurückgibt.
  • In diesem speziellen Beispiel könnten Sie dasselbe Ergebnis mit einem JOIN mit einer GROUP BY-Klausel erzielen. CROSS APPLY kann in bestimmten Szenarien jedoch flexibler und effizienter sein, insbesondere bei komplexen Unterabfragen.
Modell: gemini-1.5-flash-001
Temperatur: 1
Max. Ausgabetokens: 8.192
TopK: 40
TopP: 0,95