Consultas operador HAVING

  1. Nombre de las empresas que tienen más de dos vendedores.

SELECT v.nombrecomer
FROM vendedor v
GROUP BY v.nombrecomer
HAVING
count( numvend ) >2
LIMIT 0 , 30

  1. Número de pedido que tengan más de tres líneas de pedido.

SELECT l.numpedido
FROM linped l
GROUP BY l.numpedido
HAVING
count( l.numlinea ) >3
LIMIT 0 , 30

  1. Número de pedido donde el total de piezas pedidas es mayor que 40.

SELECT l.numpedido
FROM linped l
GROUP BY l numpedido
HAVING
SUM(lcantpedida ) >40
LIMIT 0 , 30

    1. Obtener los números de pedido donde el precio total sea superior a 1000.

SELECT l.numpedido
FROM linped l
GROUP BY l numpedido
HAVING
SUM( preciocompra*cantrecibida)>1000;
LIMIT 0 , 30

5. Para las piezas que se hayan ofertado un precio unitario medio mayor que 260€, obtener

el número de pieza, el máximo precio unitario y la cantidad de suministradores.

SELECT numpieza,MAX(preciounit),count(numvend)

FROM preciosum ps,

GROUP BY numpieza

HAVING AVG(preciounit)>260;

6. Para las piezas que se ofrecen a un precio unitario medio mayor que 260€ (sin tener en

cuenta los suministros menores de 250€) obtener el número de pieza, el máximo precio

unitario y la cantidad de suministradores.

SELECT numpieza ,MAX(preciounti)COUNT (numvend)

FROM preciosum

WHERE preciounit>250

GROUP BY numpieza

HAVING AVG(preciounit)>260;

7. Obtener aquellos números de pedido y fecha en que se confeccionaron cuya cantidad de

artículos pedidos sea superior a 30 y la recibida inferior a 10.

SELECT p.numpedido,p.fecha

FROM pedido p,linped l

WHERE p.numpedido=l.numpedido

GROUP BY l.numpedido

HAVING SUM(l.cantrecibida)>30 AND SUM (l.cantrecibida)<10;

8. Obtener el número de pieza y el precio unitario medio de aquellas piezas que tarden de

media 14 días como máximo en ser suministradas (diassum=tiempo de suminitro).

SELECT numpieza AVG (preciounti)

FROM preciosum

GROUP BY numpieza

HAVING AVG (diassum)<14;

9. Obtener los números de pedido, precio de compra y cantidad pedida de los números de la

línea 1 y recibidas en fecha 10-05-92.

SELECT numpedido,preciocompra,cantpedida

FROM linped l

WHERE numlinea=1 AND fecharecep=”1992-05-10”

10. Obtener el número, el nombre y el precio máximo unitario de las piezas cuyo precio de

venta sea mayor que 250 o menor que 170, su descuento medio oscile entre 10 y 17 y que

tengan un precio unitario medio total superior a 150, ordenado por precio máximo.

SELECT p.nimpieza.,p.nompieza,MAX (ps.preciounit)

FROM pieza p,preciousum ps

WHERE (preciovent>250 OR precivent<170) AND ps.descuento BETWEEN 10 AND 17 AND p.numpieza=ps.numpieza;

GROUP BY ps.numpieza

HAVING AVG(ps.preciounit)>150 AND AVG(ps.descuento)BETWEEN 10 AND 17

ps.preciounit>150 ORDER BY MAX (p.preciovent);

11::Determinar el número total de proveedores que pueden suministrar la pieza ‘P-0001-33’.

SELECT COUNT (numvend)

FROM preciosum

WHERE numpieza=”P-0001-33”

12. Para cada pieza, de la que se tiene información sobre sus posibles vendedores, obtener el

número de pieza, y sus precios unitarios máximo y mínimo, exceptuando la información

referida al vendedor número 1.

SELECT numpieza,Max (preciounit) ,MIN (preciounit)

FROM preciosum ps

WHERE numvend!=1

GROUP BY numpieza

HAVING

13. Dar una relación del nombre de las piezas que nos pueden suministrar más de dos

proveedores.

SELECT pi.nompieza

FROM pieza pi,preciosum ps

WHERE pi.numpieza=ps.numpieza

GROUP BY ps.numpieza,ps.numvend

HAVING COUNT ps.numvend >2

14. Obtener el número y el nombre del vendedor así como el número y nombre de las piezas

de precio unitario mayor que 200 que nos puedan suministrar.

SELECT v.numvend,v.nomvend,p.nompieza,p.numpieza

FROM vendedor v,pieza p , preciosum ps

WHERE pi.numpieza=ps.numpieza AND ps.numvend=v.numvend AND ps.preciounit>200

GROUP BY p.numpieza,v.numvend

HAVING ps.preciounit >200

ORDER BY v.numvend,v.nomvend,p.nompieza

Consultas Información Agrupada

1. Obtener para cada pieza, nombre de la pieza, precio de venta y la media de la diferencia

entre el precio de venta y el de suministro.

SELECT p.nompieza, p.preciovent, AVG( p.preciovent ps.preciounit )
FROM pieza p, preciosum ps
WHERE p.numpieza
= ps.numpieza
GROUP BY p.nompieza
LIMIT 0 , 30

2. Obtener para cada número de pedido, el precio pagado en total por ese pedido, la cantidad

pedida total así como la diferencia entre cantidad pedida total y cantidad recibida total.

SELECT numpedido, SUM( preciocompra * cantrecibida ) , SUM( cantpedida ) , SUM( cantpedida ) SUM( cantrecibida )
FROM linped
GROUP BY numpedido
LIMIT 0 , 30

3. Obtener la cantidad de vendedores de cada empresa, indicando cantidad y nombre de la

misma ordenado descendentemente por cantidad de empleados.

SELECT v.nombrecomer, COUNT( numvend ) AS cantidad
FROM vendedor v
GROUP BY nombrecomer
ORDER BY cantidad DESC
LIMIT 0 , 30

4. Obtener, por pieza solicitada, la máxima diferencia entre cantidad pedida y cantidad

recibida de entre todas las veces en que fue servida.

SELECT numpieza, MAX( l.cantpedida l.cantrecibida )
FROM linped l
GROUP BY numpieza
LIMIT 0 , 30

5. Obtener para cada pieza, el número de la pieza y el número total de vendedores que nos

pueden suministrar esa pieza.

SELECT COUNT(*), (v.numvend)

FROM preciosum ps,vendedor v

WHERE v.numvend=ps.numvend

GROUP BY ps.numpieza

6. Obtener número de pieza y número total de vendedores que la pueden suministrar para

piezas de más de 250€ de precio de venta.

SELECT p.numpieza, count( ps.numvend ) , ps.numpieza
FROM pieza p, preciosum ps
WHERE p.numpieza
= ps.numpieza
AND p.preciovent >250
GROUP BY ps.numpieza
LIMIT 0 , 30

7.-De cada pieza obtener el precio unitario medio de suministro.

SELECT p.numpieza, AVG( ps.preciounit )
FROM pieza p, preciosum ps
WHERE p.numpieza
= ps.numpieza
GROUP BY ps.numpieza;
LIMIT 0 , 30

  1. De cada pieza de precio de venta mayor que 250€ obtener el precio medio de suministro.

SELECT p.nompieza, AVG( ps.preciounit )
FROM preciosum ps,pieza p
WHERE p.numpieza
= ps.numpieza
AND p.preciovent >250
GROUP BY p.numpieza
LIMIT 0 , 30

  1. Obtener la media de las ventas realizadas por cada vendedor de cada pieza.

SELECT AVG( preciocompra*catrecibida)p.numpieza
FROM linped l, pedido p
WHERE p.numpieza
= ps.numpieza
GROUP BY ps.numvend,p.numpieza
LIMIT 0 , 30

10.Obtener la cantidad de pedidos efectuados por fecha y el total pagado por las mercancías.

SELECT COUNT( p.numpedido ) , SUM( l.cantrecibida * l.preciocompra AS total_pagado)
FROM linped l, pedido p
WHERE li.numpedido
= p.numpedido
GROUP BY p.fecha
LIMIT 0 , 30

Consultas otros operadores

1. Muestra el nombre comercial y el nombre de vendedor de aquellos que no tienen

teléfono. Muéstralo de manera ascendente por el nombre comercial.

2. Muestra el número de pieza y el nombre de vendedor de aquellas piezas que han sido

suministradas por vendedores cuya provincia empiece por A.

3. Muestra el número de pieza, el nombre y la fecha de recuento, de aquellas piezas cuya

cantidad disponible oscila entre 10 y 15.

4. Muestra todos los datos de los vendedores que sean S.L. , es decir, su nombre

comercial termina así.

5. Utilizando la cláusula JOIN correspondiente. Muestra el código de pieza, el nombre, la

cantidad pedida, el precio de compra y el importe total de las piezas del pedido con

código 1.

6. Muestra todas las piezas y el número de pedido de aquellas que lo tengan, siempre y

cuando se trate de monitores.

7. Muestra todos los datos de los vendedores cuya provincia sea Toledo, Valencia o

Asturias.

8. Muestra el número de pedido, la fecha y los números de pieza incluidos en aquellos

pedidos hechos por vendedores cuya provincia termine en S.

9. Mostrar todas las piezas cuyo precio de venta esté entre 100 y 350€ y además de

aquellas que han sido suministradas el día en que se hizo el suministro. Ordénalas por

el nombre.

10. Para los pedidos cuya fecha es el 5 de mayo de 1992, muestra los nombres de las

piezas incluidas en él cuyo código empieza por O.

11. Muestra los nombres de las piezas solicitadas en un pedido cuya fecha es menor que la

fecha de recepción del mismo y además la cantidad pedida está entre 5 y 15.

12. Mostrar los datos de los vendedores que pueden suministrar piezas que se venden con

un precio entre 50 y 100€ y que esa pieza ha sido suministrada en algún momento,

aunque no necesariamente la han suministrado ellos.

13. Nombre comercial de las empresas de alicante a las que se les ha comprado algún

monitor.

Continuar leyendo “Consultas otros operadores”

Consultas Información Agrupada

1. Obtener para cada pieza, nombre de la pieza, precio de venta y la media de la diferencia

entre el precio de venta y el de suministro.

SELECT p.nompieza, p.preciovent, AVG( p.preciovent ps.preciounit )
FROM pieza p, preciosum ps
WHERE p.numpieza
= ps.numpieza
GROUP BY p.nompieza
LIMIT 0 , 30

2. Obtener para cada número de pedido, el precio pagado en total por ese pedido, la cantidad

pedida total así como la diferencia entre cantidad pedida total y cantidad recibida total.

SELECT numpedido, SUM( preciocompra * cantrecibida ) , SUM( cantpedida ) , SUM( cantpedida ) SUM( cantrecibida )
FROM linped
GROUP BY numpedido
LIMIT 0 , 30

3. Obtener la cantidad de vendedores de cada empresa, indicando cantidad y nombre de la

misma ordenado descendentemente por cantidad de empleados.

SELECT v.nombrecomer, COUNT( numvend ) AS cantidad
FROM vendedor v
GROUP BY nombrecomer
ORDER BY cantidad DESC
LIMIT 0 , 30

4. Obtener, por pieza solicitada, la máxima diferencia entre cantidad pedida y cantidad

recibida de entre todas las veces en que fue servida.

SELECT numpieza, MAX( l.cantpedida l.cantrecibida )
FROM linped l
GROUP BY numpieza
LIMIT 0 , 30

5. Obtener para cada pieza, el número de la pieza y el número total de vendedores que nos

pueden suministrar esa pieza.

SELECT COUNT(*), (v.numvend)

FROM preciosum ps,vendedor v

WHERE v.numvend=ps.numvend

GROUP BY ps.numpieza

6. Obtener número de pieza y número total de vendedores que la pueden suministrar para

piezas de más de 250€ de precio de venta.

SELECT p.numpieza, count( ps.numvend ) , ps.numpieza
FROM pieza p, preciosum ps
WHERE p.numpieza
= ps.numpieza
AND p.preciovent >250
GROUP BY ps.numpieza
LIMIT 0 , 30

7.-De cada pieza obtener el precio unitario medio de suministro.

SELECT p.numpieza, AVG( ps.preciounit )
FROM pieza p, preciosum ps
WHERE p.numpieza
= ps.numpieza
GROUP BY ps.numpieza;
LIMIT 0 , 30

  1. De cada pieza de precio de venta mayor que 250€ obtener el precio medio de suministro.

SELECT p.nompieza, AVG( ps.preciounit )
FROM preciosum ps,pieza p
WHERE p.numpieza
= ps.numpieza
AND p.preciovent >250
GROUP BY p.numpieza
LIMIT 0 , 30

  1. Obtener la media de las ventas realizadas por cada vendedor de cada pieza.

SELECT AVG( preciocompra*catrecibida)p.numpieza
FROM linped l, pedido p
WHERE p.numpieza
= ps.numpieza
GROUP BY ps.numvend,p.numpieza
LIMIT 0 , 30

10.Obtener la cantidad de pedidos efectuados por fecha y el total pagado por las mercancías.

SELECT COUNT( p.numpedido ) , SUM( l.cantrecibida * l.preciocompra AS total_pagado)
FROM linped l, pedido p
WHERE li.numpedido
= p.numpedido
GROUP BY p.fecha
LIMIT 0 , 30

11.Calcular las ganancias (precio de compra menos precio de suministro por la cantidad

recibida) de cada vendedor que ha efectuado alguna venta.

ESTE EJERCICIO ES COMPLICADO “

SELECT ((li.preciocompra – pr.preciounit)*li.contrecibida AS ganancias

FROM linped l JOIN preciosum pr, JOIN pedido p ,ON p.numpedido=l.numpedido AND l.numpieza=pr.numpieza AND p.numvend=pre.numvend

GROUP BY pr.numvend;

12.Calcular por número de pedido, la media de la diferencia entre el precio de compra y el de

suministro (que nos ofertaba el vendedor al que se le solicitó el pedido) de las líneas de

cada pedido.

SELECT count(l.numpedido),AVG (preciocompra-preciounit)

FROM linped.l,preciosum pr

WHERE l.numpieza=pr.numpieza

GROUP BY pr.nunvend,l.numpedido;

Consultas aritméticas y de funciones agregadas

1. Obtener la diferencia entre cantidad pedida y cantidad recibida de las líneas del pedido 1.

2. Media de días de intervalo entre la fecha de envío del pedido 1 y de entrega de las

distintas piezas solicitadas en ese pedido.

3. Obtener la cantidad de provincias distintas de las que tenemos conocimiento de algún

proveedor.

4. Mínima diferencia entre precio de compra y precio de suministro del vendedor al que se

le compró.

5. Media de precios distintos de venta de piezas.

6. Máximo descuento de las piezas suministradas.

7. Número, nombre y diferencia entre precio de venta y precio de compra de la(s) pieza(s)

que suministran los vendedores de Alicante.

8. Máximo, mínimo y media de precio de venta de las piezas.

9. Cantidad total de piezas que sabemos nos pueden suministrar los proveedores.

10. Cantidad de vendedores de la base de datos.

11. Total de la diferencia entre lo pagado por compra de artículos y sus respectivos precios de

suministro ofrecidos en su día por los proveedores si el segundo precio es menor que el

primero.

Continuar leyendo “Consultas aritméticas y de funciones agregadas”

Ejercicios Base de Datos.

 

Consultas sobre varias tablas

1. Obtener el número de pieza junto con el nombre de todas las provincias desde las que

puede sernos suministrada, en orden descendente del número de pieza.

2. Modificar el requerimiento anterior para eliminar duplicados.

3. Lista el nombre y el número de las piezas.

4. Obtener el nombre y número de proveedores de la provincia de Valencia.

5. Obtener el nombre y número de proveedores de la provincia de Valencia a los que se les

ha solicitado un pedido.

6. Obtener los números de línea y su precio de compra del pedido número 1.

7. Obtener todas las piezas que se recuenten el 15/10/1992.

8. Obtener número y nombre de todas las piezas recibidas el 1 de Mayo de 1992.

9. Precio unitario del número de pieza A-1001-L y el vendedor 100.

10. Nombres de proveedores que puedan suministrarnos la pieza número A-1001-L.

11. Obtener nombre, teléfono, y ciudad del vendedor que puede suministrarnos piezas con

valor mayor de 100.

12. Obtener los vendedores que pueden suministrarnos piezas con un descuento de más del

10%.

13. Obtener los números de pedido del vendedor número 1.

14. Obtener los vendedores ordenados alfabéticamente en orden descendente.

15. Ídem en orden ascendente.

16. Obtener los números de pieza de las que conozcamos algún vendedor que nos la pueda

suministrar.

17. Número y nombre de las piezas que puedan suministrarnos el vendedor número 2 y el 4

(no necesariamente que las puedan suministrar los dos).

18. Piezas que nos puedan suministrar los vendedores de la empresa Harw S.A.

19. Número, nombre y precio de venta de las piezas que han sido compradas en un pedido

servidor por el vendedor 1.

20. Número y nombre del vendedor, y pieza que ha sido comprada a un precio mayor que el

estipulado en la lista de precios de suministro.

21. Número de pieza y número y nombre de vendedor de aquellas piezas cuyo precio de

venta es mayor que 50 o su descuento de suministro es mayor que 10.

22. Pedidos y datos del vendedor cuya fecha de pedido no sea el 22 de octubre de 1992.

23. Precios a los que nos pueden ser suministradas las piezas DD-0001-210 y FD-0001-144 y,

número y nombre de los vendedores que las podrían suministrar a esos precios.

Continuar leyendo “Ejercicios Base de Datos.”