Ejercicios Resueltos de SQL: Consultas con JOIN, UNION y GROUP BY sobre Ventas

Inglés3,05 KB

Ejercicio 1

(SELECT clt_id AS idcliente, 'Oro' AS Nivel, CONCAT(clt_nome, ',', clt_apelidos) AS Nome FROM clientes
JOIN vendas ON clt_id = ven_cliente
JOIN detalle_vendas ON ven_id = dev_venda
WHERE (YEAR(ven_data) = 2012)
GROUP BY clt_id
HAVING (SUM(dev_cantidade * (dev_prezo_unitario * (1 - IFNULL(dev_desconto / 100, 0)))) > 5000 AND SUM(dev_cantidade * (dev_prezo_unitario * (1 - IFNULL(dev_desconto, 0)))) < 1500))

UNION

(SELECT clt_id AS idcliente, 'Plata' AS Nivel, CONCAT(clt_nome, ',', clt_apelidos) AS Nome FROM clientes
JOIN vendas ON clt_id = ven_cliente
JOIN detalle_vendas ON ven_id = dev_venda
WHERE YEAR(ven_data) = 2012
GROUP BY clt_id
HAVING (SUM(dev_cantidade * (dev_prezo_unitario * (1 - IFNULL(dev_desconto / 100, 0)))) > 0 AND SUM(dev_cantidade * (dev_prezo_unitario * (1 - IFNULL(dev_desconto, 0)))) < 5000))

UNION

(SELECT clt_id AS idcliente, 'Diamante' AS Nivel, CONCAT(clt_nome, ',', clt_apelidos) AS Nome FROM clientes
JOIN vendas ON clt_id = ven_cliente
JOIN detalle_vendas ON ven_id = dev_venda
WHERE (YEAR(ven_data) = 2012)
GROUP BY clt_id
HAVING (SUM(dev_cantidade * (dev_prezo_unitario * (1 - IFNULL(dev_desconto / 100, 0)))) > 15000))

ORDER BY Nivel;

#Me falta agrupar por dinero gastado


Ejercicio 2

(SELECT clt_id AS ID, CONCAT(clt_nome, ',', clt_apelidos) AS NombreCompleto, COUNT(*) AS Boletos FROM clientes
JOIN vendas ON clt_id = ven_cliente
WHERE ven_tenda = (SELECT tda_id FROM tendas WHERE tda_poboacion = 'PADRON')
GROUP BY clt_id)

UNION

(SELECT emp_id AS ID, CONCAT(emp_nome, ',', emp_apelidos) AS NombreCompleto, (YEAR(CURDATE()) - YEAR(emp_alta)) AS Boletos FROM empregados
JOIN vendas ON emp_id = ven_empregado
WHERE ven_tenda = (SELECT tda_id FROM tendas WHERE tda_poboacion = 'PADRON')
GROUP BY emp_id);


Ejercicio 3

SELECT art_codigo, SUM(dev_cantidade) AS Cantidade, IFNULL(dev_desconto, 0) AS Desconto FROM artigos
JOIN detalle_vendas ON art_codigo = dev_artigo
JOIN vendas ON dev_venda = ven_id
WHERE YEAR(ven_data) = 2012
GROUP BY art_codigo, dev_desconto
ORDER BY art_codigo, dev_desconto DESC;


Ejercicio 4

SELECT art_provedor AS Provedor, art_stock AS Stock, art_codigo, IFNULL(SUM(dev_cantidade), 0) AS TotalVendas FROM artigos
LEFT JOIN detalle_vendas ON art_codigo = dev_artigo
GROUP BY art_provedor, art_codigo
ORDER BY TotalVendas DESC;


Ejercicio 5

SELECT pai_nome AS Pais, COUNT(clt_pais) AS TotalClientes, SUM(dev_cantidade * (dev_prezo_unitario * (1 - IFNULL(dev_desconto / 100, 0)))) AS TotalVentas, MIN(ven_data) AS PrimeiraData, MAX(ven_data) AS UltData FROM clientes
JOIN vendas ON clt_id = ven_cliente
JOIN detalle_vendas ON ven_id = dev_venda
JOIN paises ON clt_pais = pai_id
GROUP BY pai_nome;

Descargar

PDF Word HTML