Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Consulta corrigida (Com indentação e aspas simples)

Olá! Tentei corrigir a consulta com uma indentação mais amigável e aspas simples. Ficou correto? E poderia explicar melhor o WITH, como funciona, para que serve?

WITH Media_Vendas_Anteriores AS
  (SELECT AVG(Qtd_Vendas) AS Media_Qtd_Vendas
  FROM (
    SELECT COUNT(*) AS Qtd_Vendas, strftime('%Y', v.data_venda) AS Ano
    FROM vendas v
    WHERE strftime('%m', v.data_venda) = '11' AND Ano != '2022'
    GROUP BY Ano
  )),
Vendas_Atual AS
  (SELECT Qtd_Vendas AS Qtd_Vendas_Atual
  FROM (
    SELECT COUNT(*) AS Qtd_Vendas, strftime('%Y', v.data_venda) AS Ano
    FROM vendas v
    WHERE strftime('%m', v.data_venda) = '11' AND Ano = '2022'
    GROUP BY Ano
  ))
SELECT
mva.Media_Qtd_Vendas,
va.Qtd_Vendas_Atual,
ROUND((va.Qtd_Vendas_Atual - mva.Media_Qtd_Vendas)/mva.Media_Qtd_Vendas *100.0, 2) || '%' AS Porcentagem
FROM Vendas_Atual va, Media_Vendas_Anteriores mva
;
1 resposta
solução!

Oi Luís, tudo bem?

Sua consulta está bem organizada, o que torna mais fácil ler e manter o código SQL. Quanto ao WITH, ele é usado para criar subconsultas temporárias chamadas Common Table Expressions (CTEs). Eles ajudam a deixar o código SQL mais claro e organizado, especialmente em consultas complicadas que precisam ser usadas várias vezes.

No código que você compartilhou, as CTEs são: Media_Vendas_Anteriores, que calcula a média de vendas dos anos anteriores (excluindo 2022), e Vendas_Atual, que conta as vendas no ano de 2022.

Portanto, são usadas para facilitar a compreensão de consultas SQL complexas, tornando o código mais modular e fácil de manter.

Qualquer dúvida, compartilhe no fórum.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!