1) SELECT
c.id_cliente,
[Link],
[Link],
COUNT(p.id_pedido) AS quantidade_pedidos
FROM clientes c
LEFT JOIN pedidos p
ON c.id_cliente = p.id_cliente
GROUP BY c.id_cliente, [Link], [Link]
ORDER BY quantidade_pedidos DESC;
2) SELECT
YEAR(p.data_pedido) AS ano,
MONTH(p.data_pedido) AS mes,
SUM(([Link] * ip.preco_unitario - ip.desconto_item) + [Link] - [Link]) AS
total_faturado
FROM pedidos p
JOIN itens_pedido ip
ON p.id_pedido = ip.id_pedido
WHERE [Link] IN ('PAGO','ENVIADO','CONCLUIDO')
GROUP BY ano, mes
ORDER BY ano, mes;
3) SELECT
[Link],
[Link],
SUM([Link]) AS qtd_total
FROM itens_pedido ip
JOIN pedidos p
ON ip.id_pedido = p.id_pedido
JOIN produtos pr
ON ip.id_produto = pr.id_produto
WHERE [Link] <> 'CANCELADO'
GROUP BY pr.id_produto, [Link], [Link]
ORDER BY qtd_total DESC
LIMIT 10;
4) SELECT
c.id_cliente,
[Link],
AVG(subtotal + [Link] - [Link]) AS ticket_medio
FROM clientes c
JOIN pedidos p
ON c.id_cliente = p.id_cliente
JOIN (
SELECT
id_pedido,
SUM(quantidade * preco_unitario - desconto_item) AS subtotal
FROM itens_pedido
GROUP BY id_pedido
) s ON p.id_pedido = s.id_pedido
WHERE [Link] = 'CONCLUIDO'
GROUP BY c.id_cliente, [Link]
HAVING COUNT(p.id_pedido) >= 3
AND ticket_medio > 200;
5) SELECT
[Link],
[Link] AS categoria,
IFNULL([Link],0) AS quantidade
FROM produtos p
JOIN categorias c
ON p.id_categoria = c.id_categoria
LEFT JOIN estoque e
ON p.id_produto = e.id_produto
WHERE [Link] = 1
AND ([Link] = 0 OR [Link] IS NULL)
ORDER BY [Link];
6) SELECT
p.id_pedido,
p.data_pedido,
[Link],
[Link],
[Link] AS status_pagamento,
[Link] AS valor_pagamento
FROM pedidos p
LEFT JOIN pagamentos pg
ON p.id_pedido = pg.id_pedido;
7) SELECT
transportadora,
AVG(DATEDIFF(entregue_em, enviado_em)) AS media_dias_entrega
FROM envios
WHERE status = 'ENTREGUE'
GROUP BY transportadora;
8) SELECT
estado,
COUNT(*) AS total_clientes
FROM enderecos
WHERE principal = 1
GROUP BY estado
ORDER BY total_clientes DESC;
9) SELECT
p.id_pedido,
ROUND(([Link] + SUM(ip.desconto_item)) /
(SUM([Link] * ip.preco_unitario - ip.desconto_item) + [Link]) * 100,2)
AS percentual_desconto
FROM pedidos p
JOIN itens_pedido ip
ON p.id_pedido = ip.id_pedido
GROUP BY p.id_pedido
HAVING SUM([Link] * ip.preco_unitario - ip.desconto_item) > 0
ORDER BY percentual_desconto DESC
LIMIT 20;
10)SELECT
[Link],
[Link],
[Link] AS categoria
FROM produtos p
JOIN categorias c
ON p.id_categoria = c.id_categoria
WHERE LOWER([Link]) LIKE '%pro%';
11)SELECT
p.id_pedido,
p.data_pedido
FROM pedidos p
LEFT JOIN envios e
ON p.id_pedido = e.id_pedido
WHERE [Link] = 'PAGO'
AND e.id_envio IS NULL;
12)SELECT
p.id_pedido,
total_pedido,
valor_aprovado
FROM (
SELECT
p.id_pedido,
SUM([Link] * ip.preco_unitario - ip.desconto_item)
+ [Link] - [Link] AS total_pedido,
SUM(CASE WHEN [Link]='APROVADO' THEN [Link] ELSE 0 END) AS
valor_aprovado
FROM pedidos p
JOIN itens_pedido ip
ON p.id_pedido = ip.id_pedido
LEFT JOIN pagamentos pg
ON p.id_pedido = pg.id_pedido
GROUP BY p.id_pedido
)t
WHERE valor_aprovado <> total_pedido;
13)SELECT
[Link] AS categoria,
CASE
WHEN [Link] <= 50 THEN 'BARATO'
WHEN [Link] <= 200 THEN 'MEDIO'
ELSE 'CARO'
END AS faixa,
COUNT(*) AS quantidade
FROM produtos p
JOIN categorias c
ON p.id_categoria = c.id_categoria
GROUP BY categoria, faixa;
14)SELECT
c.id_cliente,
[Link],
MAX(p.data_pedido) AS ultimo_pedido
FROM clientes c
LEFT JOIN pedidos p
ON c.id_cliente = p.id_cliente
WHERE [Link] = 'ATIVO'
GROUP BY c.id_cliente, [Link]
HAVING DATEDIFF(CURDATE(), MAX(p.data_pedido)) > 90;
15)SELECT
[Link] AS categoria,
SUM([Link]) AS qtd_total_itens,
SUM([Link] * ip.preco_unitario) AS valor_total_itens
FROM itens_pedido ip
JOIN produtos p
ON ip.id_produto = p.id_produto
JOIN categorias c
ON p.id_categoria = c.id_categoria
GROUP BY [Link]
ORDER BY valor_total_itens DESC;
16)SELECT
p.id_pedido,
COUNT(ip.id_item) AS qtde_itens_distintos,
SUM([Link] * ip.preco_unitario - ip.desconto_item) AS subtotal
FROM pedidos p
JOIN itens_pedido ip
ON p.id_pedido = ip.id_pedido
GROUP BY p.id_pedido
HAVING qtde_itens_distintos >= 5;
17)SELECT
nome,
email,
DATE_FORMAT(data_cadastro,'%d/%m/%Y') AS data_cadastro
FROM clientes
WHERE email LIKE '%@[Link]';
SELECT COUNT(*) AS total
FROM clientes
WHERE email LIKE '%@[Link]';
18)SELECT *
FROM (
SELECT
YEAR(p.data_pedido) AS ano,
MONTH(p.data_pedido) AS mes,
[Link],
SUM([Link]) AS qtd,
ROW_NUMBER() OVER(
PARTITION BY YEAR(p.data_pedido), MONTH(p.data_pedido)
ORDER BY SUM([Link]) DESC
) AS posicao
FROM itens_pedido ip
JOIN pedidos p
ON ip.id_pedido = p.id_pedido
JOIN produtos pr
ON ip.id_produto = pr.id_produto
GROUP BY ano, mes, [Link]
)t
WHERE posicao = 1;
19)SELECT
YEAR(data_pedido) AS ano,
MONTH(data_pedido) AS mes,
COUNT(*) AS total_pedidos,
SUM(status='CANCELADO') AS cancelados,
ROUND(SUM(status='CANCELADO') / COUNT(*) * 100,2) AS
percentual_cancelamento
FROM pedidos
GROUP BY ano, mes;
20)SELECT
[Link],
SUM([Link] * ip.preco_unitario - ip.desconto_item + [Link] - [Link])
AS faturamento
FROM pedidos p
JOIN enderecos e
ON p.id_endereco = e.id_endereco
JOIN itens_pedido ip
ON p.id_pedido = ip.id_pedido
GROUP BY [Link]
ORDER BY faturamento DESC
LIMIT 10;