Article image
BROGTTI
BROGTTI12/09/2023 09:20
Compartilhe

COMO FAZER CTE NO FIREBIRD?

  • #SQL
CTE é uma forma de criar uma “tabela virtual” temporária que pode ser referenciada e utilizada como se fosse uma tabela real nas partes subsequentes da consulta. Pode ser recursiva se fizer referência a si mesma em sua definição, o que é útil para realizar operações que envolvem estrutura de dados hierárquicas, como árvores ou gráficos.

Com as CTEs temos as vantagens de melhorar a legibilidade e facilidade de manutenção de consultas complexas. A consulta pode ser dividida em blocos lógicos simples e separados. Estes blocos simples podem então ser utilizados para construir blocos mais complexos até que a consulta final seja montada.

Imagine que você está lidando com uma base de dados de vendas de uma loja, e você quer calcular a receita total de vendas de produtos em diferentes categorias. Você também deseja saber a média de preços de produtos em cada categoria.

Sem o uso de CTE, sua consulta poderia ficar assim:

SELECT
  categoria,
  SUM(price) AS receita_total,
  AVG(price) AS preco_medio
FROM
  produtos
GROUP BY
  categoria;

Com o uso da CTE:

WITH CategoryStats AS (
  SELECT
      category,
      SUM(price) AS receita_total,
      AVG(price) AS preco_medio
  FROM
      produtos
  GROUP BY
      categoria
)
SELECT
  categoria,
  receita_total,
  preco_medio
FROM
  CategoryStats;

Aqui, CategoryStats é a CTE. Primeiro, definimos a CTE para calcular as estatísticas (receita total e preço médio) para cada categoria de produtos. Em seguida, na consulta principal, simplesmente selecionamos os resultados da CTE. Essa abordagem divide a lógica em partes mais gerenciáveis e facilita a compreensão da consulta geral.

Visualmente, a diferença entre as duas abordagens é como a seguir: 

/* Sem CTE */ 

Consulta
   |
   v
Seleção
/  |   \
Grupo  Soma

-------------

/* Com CTE */ 

Consulta
   |
   v
  CTE
   |
   v
Seleção

A abordagem com CTE cria uma estrutura mais organizada, onde a lógica da CTE é definida separadamente e depois usada na consulta principal, resultando em um código mais legível e fácil de manter.

CTE Recursiva: https://ury1.com/9gyoT
CTE Encontrar Vendas: https://l1nq.com/sCuT4
CTE Calcular Informação: https://l1nq.com/gfEAa
Compartilhe
Comentários (0)