DEV Community

Rafaela Carvalho
Rafaela Carvalho

Posted on

Dominando a função WITH: Criando Consultas Temporárias no SQL

Olá a todos! Hoje, vamos mergulhar em um recurso extremamente útil em SQL - a instrução WITH, também conhecida como Common Table Expression (CTE).

1. Introdução à Instrução WITH

A instrução WITH nos permite definir uma tabela temporária no início de uma consulta que podemos usar em seguida. Isso é especialmente útil quando estamos trabalhando com consultas complexas, pois podemos dividir a consulta em partes menores e mais compreensíveis.

Uma CTE é como uma visão temporária, que só existe durante a execução da consulta. Veja um exemplo simples:

WITH CTE_AutoresMaisVendidos AS (
  SELECT Autor, COUNT(*) as NumeroDeVendas
  FROM Vendas
  GROUP BY Autor
)
SELECT * FROM CTE_AutoresMaisVendidos;
Enter fullscreen mode Exit fullscreen mode

Nesse exemplo, a CTE_AutoresMaisVendidos é uma tabela temporária que contém cada autor e o número de vendas. Em seguida, fazemos uma consulta SELECT simples nessa tabela temporária.

2. Exemplos de Uso

Agora, vamos ver como a instrução WITH pode ser usada para simplificar consultas complexas. Imagine que temos uma consulta onde queremos encontrar o autor mais vendido e o livro mais vendido:

WITH CTE_AutoresMaisVendidos AS (
  SELECT Autor, COUNT(*) as NumeroDeVendas
  FROM Vendas
  GROUP BY Autor
),
CTE_LivrosMaisVendidos AS (
  SELECT Livro, COUNT(*) as NumeroDeVendas
  FROM Vendas
  GROUP BY Livro
)
SELECT TOP 1 Autor FROM CTE_AutoresMaisVendidos ORDER BY NumeroDeVendas DESC,
SELECT TOP 1 Livro FROM CTE_LivrosMaisVendidos ORDER BY NumeroDeVendas DESC;
Enter fullscreen mode Exit fullscreen mode

Dividir a consulta em duas CTEs torna o código mais fácil de entender e manter.

3. WITH e Recursão

Um recurso avançado da instrução WITH é a capacidade de usar a recursão. Com a recursão, podemos executar uma consulta repetidamente, usando o resultado da iteração anterior. Isso é útil, por exemplo, para navegar por hierarquias de dados.

Por causa de sua complexidade, não vamos nos aprofundar na recursão aqui. Mas saiba que a instrução WITH permite que você crie consultas potentes e eficientes ao lidar com situações complexas.

Dominar a instrução WITH é uma habilidade valiosa para qualquer desenvolvedor SQL. Continue praticando e experimentando, e logo você estará criando consultas mais claras, eficientes e poderosas. Boa codificação!

Top comments (0)