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

Utilizei VIEW dentro de outra VIEW

Esta é minha resolução da parte do vídeo do professor, optei por transformar em uma VIEW pois iria me facilitar no segundo exercício.

/* Limite de compra dos clientes */
CREATE VIEW `VW_COMPRAS_MENSAIS` AS

select X.*, case when (x.total_compra > x.Volume_Max_de_compra) THEN 'IRREGULAR' ELSE 'REGULAR' END as REGULARIDADE  from                            
(select TC.NOME, TC.CPF ,date_format(DATA_VENDA, '%Y-%m') as mes_ano, SUM(INF.QUANTIDADE) as total_compra, MAX(VOLUME_DE_COMPRA) as Volume_Max_de_compra from notas_fiscais NF
inner join itens_notas_fiscais INF on NF.NUMERO = INF.NUMERO
inner join tabela_de_clientes TC on NF.CPF = TC.CPF
group by TC.NOME,TC.CPF, date_format(DATA_VENDA, '%Y-%m'))X;
/* vendas inválidas e calculando a diferença entre o limite de venda máximo e o realizado, em percentuais. */

CREATE VIEW `VW_COMPRAS_IRREGULARES` AS
select Y.*, 
round(((1-( Y.total_compra / Y.Volume_Max_de_compra))*-100),2) as procentagem_de_irregularidade  
from 
 vw_compras_mensais Y
 where Y.Regularidade = 'IRREGULAR';

/*Resposta final*/

select * from vw_compras_irregulares;

Então ficou assim minha resolução completa, minha duvida propriamente dita é se este método que eu escolhi é viável, pois utilizei uma VIEW dentro de outra VIEW, e ate então nunca vi o professor falar sobre está possibilidade.

1 resposta
solução!

Olá Ricardo, tudo bem?

Sim Ricardo esse método é viável, já que uma VIEW é uma tabela virtual, então você armazenou os resultados em uma tabela e a utilizou em uma outra query criando uma nova VIEW, uma nova tabela virtual, então ao invés de sempre rodar a query que é mais complexa, apenas será feito um select mais simples na VIEW que já tem os dados armazenados.

Achei bem legal a forma como você fez o exercício e bem legal também você ter compartilhado aqui com a gente.

Continue assim e bons estudos!