Spiega una funzione SQL

Spiega uno snippet di codice SQL.

Puoi eseguire query direttamente su un modello e testare i risultati restituiti quando utilizzi valori parametro diversi con la console Cloud o chiamando direttamente l'API Vertex AI.

Richiesta in formato libero

Spiega la funzione di CROSS APPLY nel codice seguente:

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;

Risposta

La funzione CROSS APPLY in questo codice SQL agisce come una sottoquery correlata che applica i risultati della sottoquery a ciascuna riga della tabella customers. Di seguito i dettagli:

  1. Query esterna:la query principale seleziona CustomerId e CustomerName dalla tabella customers, con alias customer.

  2. CROSS APPLY: questa parola chiave introduce la sottoquery correlata. Indica al database di eseguire la sottoquery per ogni riga nella tabella customers.

  3. Sottoquery: la sottoquery calcola TotalQuantity per ogni cliente:

  4. Seleziona la somma di quantity dalla tabella orders, con alias order.

  5. Applicazione di filtri alla tabella orders in base al valore CustomerId dalla riga corrente nella tabella customers.

  6. Risultato: CROSS APPLY restituisce una singola riga per ogni cliente, contenente CustomerId, CustomerName e il valore TotalQuantity calcolato.

In sostanza, CROSS APPLY consente di generare dinamicamente una nuova colonna (TotalQuantity) per ogni cliente in base ai risultati della sottoquery, unendo di fatto la tabella customers ai dati aggregati dell'ordine.

Esempio:

Supponiamo che tu abbia i seguenti dati:

Clienti:

CustomerId CustomerName
1 Mario Rossi
2 Sara Bianchi

Ordini:

OrderId CustomerId Quantità
1 1 5
2 1 3
3 2 2

La query restituirebbe il seguente risultato:

CustomerId CustomerName TotalQuantity
1 Mario Rossi 8
2 Sara Bianchi 2

Nota:

  • CROSS APPLY è simile a OUTER APPLY, ma OUTER APPLY restituisce una riga anche se la sottoquery non restituisce alcun risultato.
  • In questo esempio specifico, potresti ottenere lo stesso risultato utilizzando JOIN con una clausola GROUP BY. Tuttavia, CROSS APPLY può essere più flessibile ed efficiente in determinati scenari, soprattutto in caso di sottoquery complesse.
Modello: gemini-1.5-flash-001
Temperatura: 1
Numero massimo di token di output: 8192
TopK: 40
TopP: 0,95