Versão atual:

trabalho de sql

Boa tarde pessoal tem como vocês m ajudarem nesses exercícios não estou conseguindo. Desde já agradeço

create database loja;
USE loja;

CREATE TABLE IF NOT EXISTS `vendedor` (
  `codVendedor` int(11) NOT NULL,
  `NomeVendedor` varchar(50) NOT NULL,
  PRIMARY KEY (`codVendedor`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `vendedor` (`codVendedor`, `NomeVendedor`) VALUES
    (1, 'João'),
    (2, 'Maria'),
    (3, 'José'),
    (4, 'Pedro'),
    (5, 'Antônio'),
    (6, 'César'),
    (7, 'Ernani');
    (8, 'Lucas');

CREATE TABLE IF NOT EXISTS `cliente` (
  `codCliente` int(11) NOT NULL,
  `cpf` char(11) NOT NULL,
  `nome` varchar(50) NOT NULL,
  `endereco` varchar(200) NOT NULL,
  PRIMARY KEY (`codCliente`),
  UNIQUE KEY `cpf_UNIQUE` (`cpf`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

INSERT INTO `cliente` (`codCliente`, `cpf`, `nome`, `endereco`) VALUES
    (1, '12345678911', 'Cliente 01', 'Rua 001'),
    (2, '12345678912', 'Cliente 02', 'Rua 002'),
    (3, '12345678913', 'Cliente 03', 'Rua 003'),
    (4, '12345678914', 'Cliente 04', 'Av. 003'),
    (5, '12345678915', 'Cliente 05', 'Av. 005');

CREATE TABLE IF NOT EXISTS `produto` (
  `codProduto` int(11) NOT NULL,
  `descricao` varchar(50) NOT NULL,
  `precocusto` decimal(10,2) NOT NULL,
  `precovenda` decimal(10,2) NOT NULL,
  PRIMARY KEY (`codProduto`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `produto` (`codProduto`, `descricao`, `precocusto`, `precovenda`) VALUES
    (1, 'Caneta', 0.40, 1.90),
    (2, 'Lápis', 0.10, 1.00),
    (3, 'Capacete', 40.00, 90.00),
    (4, 'Mesa', 400.00, 700.00),
    (5, 'TV', 345.00, 690.00),
    (6, 'PenDrive', 20.00, 60.00),
    (7, 'Espelho', 300.00, 1000.00),
    (8, 'DVD', 40.00, 100.00),
    (9, 'Tênis', 39.00, 110.00),
    (10, 'Cobertor', 30.00, 45.00);
CREATE TABLE IF NOT EXISTS `venda` (
  `codVenda` int(11) NOT NULL,
  `dataVenda` date NOT NULL,
  `observacao` varchar(400) DEFAULT NULL,
  `codVendedor` int(11) NOT NULL,
  `codCliente` int(11) NOT NULL,
  PRIMARY KEY (`codVenda`),
  KEY `fk_Venda_Vendedor` (`codVendedor`),
  KEY `fk_Venda_cliente1` (`codCliente`),
  CONSTRAINT `fk_Venda_cliente1` FOREIGN KEY (`codCliente`) REFERENCES `cliente` (`codCliente`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  CONSTRAINT `fk_Venda_Vendedor` FOREIGN KEY (`codVendedor`) REFERENCES `vendedor` (`codVendedor`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `venda` (`codVenda`, `dataVenda`, `observacao`, `codVendedor`, `codCliente`) VALUES
    (1, '2012-01-01', NULL, 1, 3),
    (2, '2012-01-01', '', 2, 3),
    (3, '2012-01-08', NULL, 3, 4),
    (4, '2012-02-01', NULL, 1, 1),
    (5, '2012-04-01', NULL, 4, 3),
    (6, '2012-04-10', NULL, 2, 1),
    (7, '2012-06-10', NULL, 5, 2);
CREATE TABLE IF NOT EXISTS `vendaitem` (
  `codProduto` int(11) NOT NULL,
  `codVenda` int(11) NOT NULL,
  `precocusto` decimal(10,2) DEFAULT NULL,
  `precovenda` decimal(10,2) DEFAULT NULL,
  `quantidade` decimal(10,3) NOT NULL,
  PRIMARY KEY (`codProduto`,`codVenda`),
  KEY `fk_Produto_has_Venda_Venda1` (`codVenda`),
  KEY `fk_Produto_has_Venda_Produto1` (`codProduto`),
  CONSTRAINT `fk_Produto_has_Venda_Produto1` FOREIGN KEY (`codProduto`) REFERENCES `produto` (`codProduto`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  CONSTRAINT `fk_Produto_has_Venda_Venda1` FOREIGN KEY (`codVenda`) REFERENCES `venda` (`codVenda`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `vendaitem` (`codProduto`, `codVenda`, `precocusto`, `precovenda`, `quantidade`) VALUES
    (1, 1, 0.40, 1.90, 5.000),
    (1, 2, 0.40, 1.90, 59.000),
    (2, 2, 0.10, 1.00, 59.000),
    (3, 1, 40.00, 90.00, 5.000),
    (3, 2, 40.00, 90.00, 59.000),
    (3, 4, 40.00, 90.00, 2.000),
    (3, 5, 40.00, 90.00, 2.000),
    (4, 2, 400.00, 700.00, 59.000),
    (4, 4, 400.00, 700.00, 2.000),
    (4, 5, 400.00, 700.00, 2.000),
    (4, 6, 400.00, 700.00, 4.000),
    (5, 2, 345.00, 690.00, 59.000),
    (5, 4, 345.00, 690.00, 2.000),
    (5, 5, 345.00, 690.00, 2.000),
    (5, 6, 345.00, 690.00, 4.000),
    (6, 2, 20.00, 60.00, 59.000),
    (6, 3, 20.00, 60.00, 20.000),
    (6, 4, 20.00, 60.00, 2.000),
    (6, 5, 20.00, 60.00, 2.000),
    (6, 6, 20.00, 60.00, 4.000),
    (7, 2, 300.00, 1000.00, 59.000),
    (7, 3, 300.00, 1000.00, 20.000),
    (7, 4, 300.00, 1000.00, 2.000),
    (7, 5, 300.00, 1000.00, 2.000),
    (7, 6, 300.00, 1000.00, 4.000),
    (7, 7, 300.00, 1000.00, 2.000),
    (8, 2, 40.00, 100.00, 59.000),
    (8, 3, 40.00, 100.00, 20.000),
    (8, 4, 40.00, 100.00, 2.000),
    (8, 5, 40.00, 100.00, 2.000),
    (8, 6, 40.00, 100.00, 4.000),
    (8, 7, 40.00, 100.00, 2.000),
    (9, 2, 39.00, 110.00, 59.000),
    (9, 3, 39.00, 110.00, 20.000),
    (9, 4, 39.00, 110.00, 2.000),
    (9, 5, 39.00, 110.00, 2.000),
    (9, 6, 39.00, 110.00, 4.000),
    (9, 7, 39.00, 110.00, 2.000),
    (10, 2, 30.00, 45.00, 59.000),
    (10, 3, 30.00, 45.00, 20.000),
    (10, 4, 30.00, 45.00, 2.000),
    (10, 5, 30.00, 45.00, 2.000),
    (10, 6, 30.00, 45.00, 4.000),
    (10, 7, 30.00, 45.00, 2.000);
/*1 Exibir a soma de vendas por vendedor, nome, quantidade e valor;*/
select vendedor.codvendedor,
vendedor.NomeVendedor,
sum(vendaitem.quantidade),
sum(vendaitem.quantidade*vendaitem.precovenda)
from venda
inner join vendedor
on venda.codvendedor=vendedor.codvendedor
inner join vendaitem
on venda.codvenda=vendaitem.codvenda
group by vendedor.codVendedor,
vendedor.nomevendedor;
/*2 Exibir a soma de compras por cliente, nome, quantidade e valor;*/
select cliente.codcliente,
cliente.Nome,
sum(vendaitem.quantidade),
sum(vendaitem.quantidade*vendaitem.precovenda)
from venda
inner join cliente
on venda.codcliente=cliente.codcliente
inner join vendaitem
on venda.codvenda=vendaitem.codvenda
group by cliente.codcliente,
cliente.nome;
/*3 Exibir o valor médio de vendas por dia exibindo os dias de maior venda primeiro;*/
select datavenda,
avg (vendaitem.quantidade*vendaitem.precovenda)
from venda
inner join vendaitem
on venda.codvenda=vendaitem.codvenda
group by datavenda
order by avg (vendaitem.quantidade*vendaitem.precovenda)desc
/*4  Exibir o valor da maior venda realizada*/
select max (precoVenda * quantidade)
from venda item
/*5 Exibir a data da primeira venda realizada*/
select min (datavenda) from venda;
/*6 Exibir o nome do vendedor e a média de vendas, de todos que ficaram com média menor que 200*/
select nomevendedor, avg (precovenda * quantidade)
from venda
inner join vendaitem
on venda.codvenda = vendaitem.codvenda
inner join vendedor
on venda.codvendedor = vendedor.codvendedor
group by vendedor.codvendedor,nomevendedor
having avg (precovenda * quantidade) < 10
/*7 Exibir a média de vendas do mês de Janeiro*/
select avg (vendaitem.quantidade * vendaitem.precovenda)
from venda
inner join vendaitem on venda.codvenda = vendaitem.codvenda
where month (venda.datavenda) = 01;
/*8  Exibir a média de lucro de cada mês */
select month (datavenda),
avg (prcovenda * quantidade -
 precocusto * quantidade)
from venda
inner join vendaitem
on venda.codvenda = vendaitem.codvenda
group by month (datavenda)
/*9 Exibir a quantidade de compra já realizadas por cada cliente*/
select cliente.codcliente,
nome,
count(codvenda)
from venda
inner join cliente
on venda.codcliente=clientecodcliente
group by cliente.codcliente,nome
/*
1) Trazer o nome dos vendedores que não realizaram nenhuma venda. 
2) Trazer o nome dos clientes realizaram mais de uma compra. 
3) Exibir a descrição do produto, nome do produto e a diferença entre o 
lucro obtido por este produto e a média de lucratividade de todos os produtos. 
4) Exibir a lista de todos os clientes que já compraram caneta ou lápis.
5) Atualizar o preço de venda de todos os produtos que estão com preço venda abaixo 
da média para o preço médio de venda. 
6) Excluir todos os produtos que nunca foram vendidos.
7) Excluir todas as vendas do vendedor 4.
 */
/*1*/
select NomeVendedor, codVenda, venda.codVendedor
from vendedor
inner join venda on vendedor.codVendedor = venda.codVendedor
where vendedor.codVenda not in 

/*2*/
select nome, COUNT(cliente.codCliente) AS 'Total Compra'
from cliente
inner join venda on cliente.codCliente = venda.codCliente
group by nome 
having count(cliente.codCliente) > 1

/*4*/
select descricao, produto.codProduto
from produto
inner join vendaitem on produto.codProduto = vendaitem.codProduto
where (produto.codProduto = 1 or produto.codProduto = 2) in

Versões(3):

Ver a versão formatada

trabalho de sql

  • criado 25 de mai de 2014

Comentário

new question