Complex Views são views que são criadas a partir de consultas SQL avançadas e sofisticadas. Essas views podem envolver múltiplas tabelas, subconsultas, agregações, funções, joins complicados, ou cálculos. Enquanto as Simple Views são usadas para simplificar o acesso a dados básicos, Complex Views são utilizadas para encapsular lógica de negócios mais elaborada e combinar dados de várias fontes em um único conjunto de resultados.
JOINs
.SUM()
, AVG()
, COUNT()
, etc., para calcular totais, médias, contagens e outras métricas.A criação de uma Complex View segue a mesma sintaxe básica de uma Simple View, mas a consulta subjacente é muito mais elaborada. Veja um exemplo:
Exemplo: Suponha que temos as seguintes tabelas em um sistema de vendas:
Vendas
: Armazena informações sobre vendas, incluindo id_venda
, id_cliente
, data_venda
, valor_total
.Clientes
: Armazena dados dos clientes, incluindo id_cliente
, nome_cliente
, cidade
.Produtos
: Detalhes sobre os produtos, incluindo id_produto
, nome_produto
, preco
.Itens_Venda
: Contém os itens vendidos em cada venda, incluindo id_venda
, id_produto
, quantidade
.CREATE VIEW View_Total_Vendas_Clientes AS
SELECT
c.id_cliente,
c.nome_cliente,
c.cidade,
COUNT(DISTINCT iv.id_produto) AS total_produtos_comprados,
SUM(v.valor_total) AS total_gasto,
AVG(v.valor_total) AS media_valor_venda
FROM
Clientes c
JOIN
Vendas v ON c.id_cliente = v.id_cliente
JOIN
Itens_Venda iv ON v.id_venda = iv.id_venda
GROUP BY
c.id_cliente, c.nome_cliente, c.cidade;
Explicação:
Clientes
, Vendas
, Itens_Venda
) para trazer informações completas sobre vendas e clientes.COUNT(DISTINCT iv.id_produto)
: Conta o número de produtos diferentes comprados por cada cliente.SUM(v.valor_total)
: Calcula o total gasto por cada cliente em todas as vendas.AVG(v.valor_total)
: Calcula o valor médio das vendas para cada cliente.id_cliente
), garantindo que as agregações sejam calculadas por cliente.