AJUDA (SQL) - Queries de consulta entre tabelas
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);
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
Curtidas 0
Respostas
Emerson Nascimento
12/10/2019
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?
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
GOSTEI 0