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
;