Explica una función de SQL

Explicar un fragmento de código SQL.

Puedes consultar un modelo directamente y probar los resultados que se muestran cuando usas valores de parámetros diferentes con la consola de Cloud o con una llamada directa a la API de Vertex AI.

Mensaje Formato libre

Explica la función de CROSS APPLY en el siguiente código:

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;

Respuesta

La función CROSS APPLY en este código SQL actúa como una subconsulta correlacionada que aplica los resultados de la subconsulta a cada fila en la tabla customers. Aquí tenemos el siguiente desglose:

  1. Consulta externa: La consulta principal selecciona CustomerId y CustomerName de la tabla customers, con un alias customer.

  2. CROSS APPLY: Esta palabra clave presenta la subconsulta correlacionada. Indica a la base de datos que ejecute la subconsulta para cada fila de la tabla customers.

  3. Subconsulta: La subconsulta calcula el TotalQuantity para cada cliente de la siguiente manera:

  4. Selecciona la suma de quantity de la tabla orders, con alias de order.

  5. Filtrado de la tabla orders según el CustomerId de la fila actual en la tabla customers.

  6. Resultado: CROSS APPLY muestra una sola fila para cada cliente, que contiene el CustomerId, el CustomerName y el TotalQuantity calculado.

En esencia, CROSS APPLY te permite generar dinámicamente una columna nueva (TotalQuantity) para cada cliente según los resultados de la subconsulta, uniendo de forma efectiva la tabla customers con los datos agregados de los pedidos.

Ejemplo:

Supongamos que tienes los siguientes datos:

Clientes:

CustomerId CustomerName
1 Juan Pérez
2 Juana Sánchez

Pedidos:

OrderId CustomerId Cantidad
1 1 5
2 1 3
3 2 2

La consulta mostraría el siguiente resultado:

CustomerId CustomerName TotalQuantity
1 Juan Pérez 8
2 Juana Sánchez 2

Nota:

  • CROSS APPLY es similar a OUTER APPLY, pero OUTER APPLY muestra una fila incluso si la subconsulta no muestra ningún resultado.
  • En este ejemplo específico, podrías lograr el mismo resultado mediante una JOIN con una cláusula GROUP BY. Sin embargo, CROSS APPLY puede ser más flexible y eficiente en ciertas situaciones, en especial cuando se trata de subconsultas complejas.
Modelo: gemini-1.5-flash-001
Temperatura: 1
Cantidad máxima de tokens de salida: 8192
K superior 40
P superior 0.95