Explicar uma função SQL

Explicar um snippet de código SQL.

É possível consultar um modelo diretamente e testar os resultados retornados ao usar diferentes valores de parâmetros com o console do Cloud ou ao chamar a API Vertex AI diretamente.

Comando Formato livre

Explique a função de CROSS APPLY no código abaixo:

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;

Resposta

A função CROSS APPLY no código SQL atua como uma subconsulta relacionada, que aplica os resultados da subconsulta a cada linha na tabela customers. Veja em detalhes:

  1. Consulta externa: a consulta principal seleciona CustomerId e CustomerName da tabela customers, com o alias como customer.

  2. CROSS APPLY: essa palavra-chave introduz a subconsulta correlacionada. Ela instrui o banco de dados a executar a subconsulta de cada linha na tabela customers.

  3. Subconsulta: a subconsulta calcula o TotalQuantity para cada cliente:

  4. Selecionando a soma de quantity na tabela orders, com o alias order.

  5. Filtrar a tabela orders com base no CustomerId da linha atual na tabela customers.

  6. Resultado: CROSS APPLY retorna uma única linha para cada cliente, contendo CustomerId, CustomerName e o TotalQuantity calculado.

Basicamente, CROSS APPLY permite gerar dinamicamente uma nova coluna (TotalQuantity) para cada cliente com base nos resultados da subconsulta, mesclando efetivamente os customers com os dados agregados de pedidos.

Exemplo:

Digamos que você tenha os seguintes dados:

Clientes:

CustomerId CustomerName
1 João da Silva
2 Joana Silva

Pedido:

OrderId CustomerId Quantidade
1 1 5
2 1 3
3 2 2

A consulta retornaria o seguinte resultado:

CustomerId CustomerName TotalQuantity
1 João da Silva 8
2 Joana Silva 2

Observação:

  • CROSS APPLY é semelhante a OUTER APPLY, mas OUTER APPLY retorna uma linha mesmo que a subconsulta não retorne nenhum resultado.
  • Neste exemplo específico, você poderia alcançar o mesmo resultado usando um JOIN com uma cláusula GROUP BY. No entanto, CROSS APPLY pode ser mais flexível e eficiente em determinados cenários, especialmente ao lidar com subconsultas complexas.
Modelo: Gemini Flash
Temperatura: 1
Máximo de tokens de saída: 8192
TopK: 40
TopP: 0,95