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 di parametro diversi con la console Cloud o chiamando direttamente l'API Vertex AI.

Prompt 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 funge da sottoquery correlata che applica i risultati della sottoquery a ogni riga della tabella customers. Ecco una suddivisione:

  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 della tabella customers.

  3. Subquery:la sottoquery calcola il valore TotalQuantity per ogni cliente nel seguente modo:

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

  5. Filtrare la tabella orders in base a CustomerId della riga corrente nella tabella customers.

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

In sostanza, CROSS APPLY ti consente di generare dinamicamente una nuova colonna (TotalQuantity) per ogni cliente in base ai risultati della sottoquery, unendo in modo efficace la tabella customers ai dati degli ordini aggregati.

Esempio:

Supponiamo di avere 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 restituirà 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 risultati.
  • In questo esempio specifico, puoi ottenere lo stesso risultato utilizzando un JOIN con una clausola GROUP BY. Tuttavia, CROSS APPLY può essere più flessibile ed efficiente in determinati scenari, in particolare quando si tratta di sottoquery complesse.
Modello: gemini-1.5-flash-001
Temperatura: 1
Numero massimo di token di output: 8192
TopK: 40
TopP: 0,95