Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% encontró este documento útil (0 votos)
6 vistas4 páginas

Sesion 10

Descargar como pdf o txt
Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1/ 4

1.

Mostrar el nombre de los clientes de la comunidad valenciana que hayan hecho más de
10 facturas y hayan facturado más de 1000 euros (sin tener en cuenta los descuentos ni el
IVA). Junto con el nombre mostrar el número de facturas y la provincia a la que pertenecen

SELECT f.codcli,c.nombre,COUNT(f.codfac) AS nfact,p.codpro


FROM lineas_fac AS l JOIN facturas AS f USING(codfac)
JOIN clientes AS c USING(codcli)
JOIN pueblos AS p USING(codpue)

WHERE ((SELECT COUNT(f.codfac) FROM facturas AS f WHERE f.codcli=c.codcli GROUP


BY f.codcli)> 10 AND (SELECT SUM(l.cant*l.precio) FROM lineas_fac AS l WHERE
l.codfac=f.codfac)>1000) AND p.codpro IN (‘12’,’46’,’03’)
GROUP BY f.codcli,c.nombre,p.codpro

2. Escribir una sentencia en SQL que para cada cliente muestre el ano que hizo una mayor
facturacion (sin tener en cuenta los descuentos ni el IVA).

SELECT f.codcli,c.nombre,EXTRACT(year FROM f.fecha),SUM(l.cant*l.precio)


FROM lineas_fac AS l JOIN facturas AS f USING(codfac)
JOIN clientes AS c USING(codcli)

GROUP BY f.codcli,c.nombre,f.fecha

3. Escribir una sentencia en SQL que obtenga el nombre de los clientes para los cuales han
pasado mas de 2 meses (60 dıas) entre la primera y la ultima factura del año pasado.

SELECT c.codcli,c.nombre
FROM clientes AS c JOIN facturas AS f USING(codcli)
WHERE EXTRACT(year FROM f.fecha)=EXTRACT(year FROM current_date)-1
GROUP BY c.codcli,c.nombre
HAVING (MAX(f.fecha)-MIN(f.fecha))>=60;

4. Escribir una sentencia en SQL tal que obtenga el nombre del cliente al que se le ha
realizado una menor facturacion durante el año pasado, sin tener en cuenta los descuentos
e impuestos y considerando solo aquellos clientes que han comprado algo.

SELECT c.codcli,c.nombre
FROM lineas_fac AS l JOIN facturas AS f USING(codfac)
JOIN clientes AS c USING(codcli)
GROUP BY c.codcli,c.nombre
HAVING SUM(l.cant*l.precio)=(SELECT MIN(p) FROM (SELECT codfac, SUM(cant*precio)
AS p FROM lineas_fac GROUP BY codfac) AS t )
5. Escribir una sentencia en SQL que obtenga el nombre de aquellos clientes que siempre
compran cantidades de artıculos multiplos de 2.

SELECT codcli, nombre


FROM clientes AS c
WHERE c.codcli NOT IN (SELECT codcli
FROM lineas_fac AS l JOIN facturas AS f USING(codfac)
WHERE l.cant%2 != 0 AND f.codcli IS NOT NULL) AND c.codcli IN (SELECT codcli FROM
facturas);

6. Escribir una sentencia en SQL que obtenga un listado de clientes de la provincia de


Castellon ordenado de mayor a menor por el ratio importe comprado dividido unidades
compradas, solo para compras realizadas durante el año pasado y considerando solo
aquellos clientes que fueron atendidos por un solo vendedor.

SELECT c.codcli, c.nombre, SUM(cant*precio)/SUM(cant) AS ratio


FROM lineas_fac AS l JOIN facturas AS f USING(codfac)
JOIN clientes AS C USING(codcli)
JOIN pueblos AS p USING(codpue)
WHERE EXTRACT(year FROM current_date)-EXTRACT(year FROM fecha)=1 AND
p.codpro='12'
GROUP BY c.codcli, c.nombre
HAVING COUNT(DISTINCT codven)=1
ORDER BY ratio

7. Escribir una sentencia en SQL que muestre los vendedores que han hecho 5 o mas
facturas a un mismo cliente.

SELECT v.codven,v.nombre
FROM vendedores AS v
WHERE 5<(SELECT COUNT(codfac) FROM facturas AS f WHERE f.codven= v.codven
GROUP BY codcli)

8. Escribir una sentencia en SQL que devuelva el numero de provincias en las que hay
clientes que han hecho mas de 10 facturas

SELECT COUNT(DISTINCT(p.codpro)) AS npro


FROM pueblos AS p JOIN clientes AS c USING(codpue)
WHERE(SELECT COUNT(codfac) FROM facturas AS f WHERE f.codcli=c.codcli)>10;
9. Escribir una sentencia en SQL que muestre el numero total de unidades vendidas de los
artıculos que solo se vendieron en 2016

SELECT SUM(l.cant)
FROM lineas_fac AS l JOIN facturas AS f USING(codfac)
WHERE EXTRACT(year FROM f.fecha) = '2016'
EXCEPT
SELECT SUM(l.cant)
FROM lineas_fac AS l JOIN facturas AS f USING(codfac)
WHERE EXTRACT(year FROM f.fecha) != '2016'

10. Escribir una sentencia en SQL que obtenga los pueblos de Valencia en los que hay
menos de dos vendedores (aquellos pueblos en los que no hay vendedores tambien se
deben mostrar).

SELECT codpue,codpro
FROM pueblos
WHERE p.codpro=’46’ AND (SELECT COUNT(v.codven)
FROM vendedores AS v RIGHT OUTER JOIN pueblos AS p USING(codpue)
WHERE v.codpue=p.codpue
GROUP BY p.codpue)<2

11. Escribir una sentencia en SQL que, para cada provincia, muestre el numero de clientes
de pueblos de esa provincia que han comprado mas de 5 articulos distintos

SELECT INITCAP(pr.nombre), COUNT(*)


FROM clientes AS c JOIN pueblos AS p USING(codpue)
JOIN provincias AS pr USING(codpro)
WHERE 5 < (SELECT COUNT(DISTINCT l.codart) FROM lineas_fac AS l JOIN facturas AS
f USING(codfac) WHERE f.codcli = c.codcli)
GROUP BY pr.codpro, pr.nombre;

12. Escribir una sentencia en SQL que obtenga los vendedores que no han vendido nunca
articulos cuya descripción empiezan por ’al’ (recuerda que la descripción puede estar en
cualquier formato).

SELECT DISTINCT v.codven, v.nombre


FROM facturas AS f JOIN vendedores AS v USING(codven)
WHERE codven NOT IN (SELECT codven
FROM facturas AS f JOIN lineas_fac AS l USING(codfac)
JOIN articulos AS a USING(codart)
WHERE UPPER(a.descrip) LIKE 'AL%' AND f.codven IS NOT
NULL);

También podría gustarte