Advertisement
Guest User

Untitled

a guest
Nov 20th, 2017
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 3.05 KB | None | 0 0
  1. -- 1 - entregadores que não fizeram nenhuma entrega naquela data FUNCIONANDO
  2.     SELECT DISTINCT e.nome
  3.         FROM entregadores e inner join pedidos p
  4.         on e.idEntregador = p.idEntregador
  5.         WHERE p.idEntregador not in (SELECT DISTINCT COALESCE(pd.idEntregador, 0) FROM
  6.                                      pedidos pd WHERE pd.dataPedido = '2017-11-02');
  7.                                      
  8. -- 2 - clientes que foram cadastrados mas não compraram FUNCIONANDO
  9.     SELECT c.nome
  10.         FROM clientes c LEFT JOIN pedidos p
  11.         on c.idCliente = p.idCliente
  12.         WHERE p.idCliente IS NULL;
  13.        
  14. -- 3 - item mais vendido por ordem FUNCIONANDO
  15. SELECT * FROM (
  16.     SELECT c.nome as nome, COUNT(pc.idComida) as 'qt comprada'
  17.         FROM comidas c left join pedidoscomidas pc
  18.             on c.idComida = pc.idComida
  19.         GROUP BY c.nome
  20.  
  21.         UNION ALL
  22.        
  23.     SELECT b.nome as 'NOME', COUNT(pb.idBebida) as 'qt comprada'
  24.         FROM bebidas b left join pedidosbebidas pb
  25.             on b.idBebida = pb.idBebida
  26.         GROUP BY b.nome
  27. ) AS y ORDER BY 2 DESC;
  28.  
  29. -- 4 - preço total de cada pedido funcionando
  30. SELECT idPedido, sum(valor) from (
  31.     SELECT p.idPedido, COALESCE(b.valor, 0) AS 'valor'
  32.         FROM pedidos p inner join pedidosbebidas pb on p.idPedido = pb.idPedido
  33.                        inner join bebidas b on b.idBebida = pb.idBebida
  34.                    
  35.         UNION ALL
  36.            
  37.     SELECT p.idPedido, COALESCE(c.valor, 0) AS 'valor'
  38.         FROM pedidos p inner join pedidoscomidas pc on p.idPedido = pc.idPedido
  39.                        inner join comidas c on c.idComida = pc.idComida
  40. ) AS x GROUP BY idPedido ORDER BY sum(valor) DESC;
  41.  
  42. -- 5 - salário médio de cada entregador em tal período funciona
  43. SELECT DISTINCT e.nome, ((e.precoEntrega * count(p.idEntregador)) / datediff('2017-11-06', '2017-11-01')) as 'salario diario'
  44.     FROM entregadores e inner join pedidos p
  45.         on e.idEntregador = p.idEntregador
  46.     WHERE p.dataPedido between '2017-11-01' and '2017-11-06'
  47. GROUP BY e.nome ORDER BY 2 DESC;
  48.  
  49. -- 6 - quantas vezes um entregador entregou em tal data FUNCIONANDO
  50. SELECT DISTINCT COALESCE(e.nome, 'não há'), count(p.idEntregador)
  51.     FROM entregadores e inner join pedidos p
  52.         on e.idEntregador = p.idEntregador
  53.     WHERE p.dataPedido = '2017-11-02'
  54. GROUP BY e.nome ORDER BY 2;
  55.  
  56. -- 7 - clientes que mais gastaram dinheiro FUNCIONANDO
  57. SELECT nome, sum(valor) from (
  58.     SELECT cli.nome as nome, COALESCE(b.valor, 0) AS 'valor'
  59.         FROM pedidos p inner join clientes cli on p.idCliente = cli.idCliente
  60.                        inner join pedidosbebidas pb on p.idPedido = pb.idPedido
  61.                        inner join bebidas b on b.idBebida = pb.idBebida
  62.                    
  63.         UNION ALL
  64.            
  65.     SELECT cli.nome as nome, COALESCE(c.valor, 0) AS 'valor'
  66.         FROM pedidos p inner join clientes cli on p.idCliente = cli.idCliente
  67.                        inner join pedidoscomidas pc on p.idPedido = pc.idPedido
  68.                        inner join comidas c on c.idComida = pc.idComida
  69. ) AS x GROUP BY nome ORDER BY sum(valor) DESC;
  70.  
  71. -- 8 - cliente que pediu mais vezes FUNCIONANDO
  72. SELECT DISTINCT c.nome, count(p.idCliente)
  73.     FROM clientes c inner join pedidos p
  74.         on c.idCliente = p.idCliente
  75. GROUP BY c.nome ORDER BY 2 DESC;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement