AJUDA (SQL) - Queries de consulta entre tabelas

12/10/2019

0

Sou iniciante em SQL e preciso de ajuda em um exercício. Usando 3 tabeles de referência, uma de clientes, uma de produtos e uma de pedidos. Estou tentando desenvolver queries que respondam as seguintes questões:

1. Qual o ticket médio de cada produto?
2. Qual o ticket médio de cada cliente?
3. Quais clientes tem somente o produto XYZ?
4. Qual produto é o mais contratado na segunda compra do cliente?

Abaixo segue o script usado para as tabelas:

CREATE TABLE Clientes (
id int,
nome varchar(40)
)

CREATE TABLE Produtos (
id int,
descricao varchar(20)
)

CREATE TABLE Pedidos (
id int,
cliente id int,
produto id int,
valor_mensal int,
data_inicio date,
data_fim date
)

INSERT INTO Clientes (id, nome) VALUES (1, 'Maria');
INSERT INTO Clientes (id, nome) VALUES (2, 'João');
INSERT INTO Clientes (id, nome) VALUES (3, 'Pedro');
INSERT INTO Clientes (id, nome) VALUES (4, 'Rita');
INSERT INTO Clientes (id, nome) VALUES (5, Antonio');

INSERT INTO Produtos (id, descricao) VALUES (1, 'ABC');
INSERT INTO Produtos (id, descricao) VALUES (2, 'OPQ');
INSERT INTO Produtos (id, descricao) VALUES (3, 'XYZ');

INSERT INTO Pedidos (id, cliente_id, produto_id, valor mensal, data_inicio) VALUES (1, 1, 1, 50, 2/10/2017);
INSERT INTO Pedidos (id, cliente_id, produto_id, valor mensal, data_inicio) VALUES (2, 2, 2, 29, 3/15/2017);
INSERT INTO Pedidos (id, cliente_id, produto_id, valor mensal, data_inicio, data_fim) VALUES (1, 1, 1, 50, 8/22/2016, 2/17/2017);
INSERT INTO Pedidos (id, cliente_id, produto_id, valor mensal, data_inicio) VALUES (4, 2, 3, 250, 2/10/2017);
INSERT INTO Pedidos (id, cliente_id, produto_id, valor mensal, data_inicio) VALUES (5, 2, 1, 50, 5/15/2015);
INSERT INTO Pedidos (id, cliente_id, produto_id, valor mensal, data_inicio) VALUES (6, 3, 1, 250, 5/1/2018);
INSERT INTO Pedidos (id, cliente_id, produto_id, valor mensal, data_inicio) VALUES (7, 3, 2, 59, 2/28/2018);
INSERT INTO Pedidos (id, cliente_id, produto_id, valor mensal, data_inicio) VALUES (8, 4, 2, 29, 11/8/2015);
INSERT INTO Pedidos (id, cliente_id, produto_id, valor mensal, data_inicio) VALUES (9, 4, 2, 35, 6/5/2016);
INSERT INTO Pedidos (id, cliente_id, produto_id, valor mensal, data_inicio) VALUES (10, 4, 2, 49, 6/7/2016);
INSERT INTO Pedidos (id, cliente_id, produto_id, valor mensal, data_inicio, data_fim) VALUES (1, 1, 1, 50, 9/9/2016, 1/1/2018);
INSERT INTO Pedidos (id, cliente_id, produto_id, valor mensal, data_inicio) VALUES (12, 5, 3, 600, 9/15/2016);
João Martins

João Martins

Responder

Posts

14/10/2019

Emerson Nascimento

1. Qual o ticket médio de cada produto?
select p.produto_id, pr.descricao, avg(p.valor_mensal) media
from pedidos p
left join produtos pr on pr.id = p.produto_id
group by p.produto_id, pr.descricao

2. Qual o ticket médio de cada cliente?
select p.cliente_id, c.nome, avg(p.valor_mensal) media
from pedidos p
left join clientes c on c.id = p.cliente_id
group by p.cliente_id, c.nome

3. Quais clientes tem somente o produto XYZ?
select p.cliente_id, c.nome
from pedidos p
inner join clientes c on c.id = p.cliente_id
inner join produtos pr on pr.id = p.produto_id and pr.descricao = 'XYZ'
left join produtos pr2 on pr2.id = p.produto_id and pr2.descricao <> 'XYZ'
where pr2.descricao is null
group by p.cliente_id, c.nome
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar