Sie sind auf Seite 1von 18

REALICE LAS SIGUIENTES TABLAS:

 EMPLEADOS CLAVE PRIMARIA ES NUMEMP

Empleados
Numemp Nombre Edad Oficina Titulo Contrato Jefe Cuota Ventas
101 Antonio 45 12 representante 10/20/1986 104 300,000.00 305,000.00
Viguer
102 Alvaro Jaumes 48 21 representante 12/10/1986 108 350,000.00 474,000.00
103 Juan Rovira 29 12 representante 3/1/1987 104 275,000.00 286,000.00
104 Jose Gonzalez 33 12 dir ventas 5/19/1987 106 200,000.00 143,000.00
105 Vicente 37 13 representante 2/12/1988 104 350,000.00 368,000.00
Pantalla
106 Luis Antonio 52 11 dir general 6/14/1988 275,000.00 299,000.00
107 Jorge 49 22 representante 11/14/1988 108 300,000.00 186,000.00
Guitierrez
108 Ana 62 21 dir ventas 10/12/1989 106 350,000.00 361,000.00
Bustamante
109 Maria Sunta 31 11 representante 10/12/1999 106 300,000.00 392,000.00
110 Juan Victor 41 representante 1/13/1990 104 76,000.00

 OFICINAS CLAVE PRIMARIA ES OFICINA

Oficinas
Oficina Ciudad Region Dir Objetivo Ventas
11 Valencia este 106 575,000.00 693,000.00
12 Alicante este 104 800,000.00 735,000.00
13 Castellon este 105 350,000.00 368,000.00
21 Badajoz oeste 108 725,000.00 836,000.00
22 A Curuña oeste 108 300,000.00 186,000.00
23 Madrid centro 108
24 Madrid centro 108 250,000.00 150,000.00
26 Pamplona norte
28 Valencia este 900,000.00 0.00
 CLIENTES CLAVE PRIMARIA ES NUMCLIE

Clientes
Numclie Nombre Repclie Limitecredito
2101 Luis Garcia Anton 106 65,000.00
2102 Alvaro Rodriguez 101 65,000.00
2103 Jaime Llorens 105 50,000.00
2105 Antonio Canales 101 45,000.00
2106 Juan Suarez 102 65,000.00
2107 Julian Lopez 110 35,000.00
2108 Julia Antequera 109 55,000.00
2109 Albaro Juanes 103 25,000.00
2111 Cristobal Garcia 103 50,000.00
2112 Maria Silva 108 50,000.00
2113 Luisa Maron 104 20,000.00
2114 Cristina Bulini 102 20,000.00
2115 Vicente Martinez 101 20,000.00
2117 Carlos Tena 106 35,000.00
2118 Junipero Alvarez 108 60,000.00
2119 Salomon Bueno 109 25,000.00
2120 Juan Malo 102 50,000.00
2121 Vicente Rios 103 45,000.00
2122 Jose Marchante 105 30,000.00
2123 Jose Libros 102 40,000.00
2124 Juan Bolto 107 40,000.00

 PRODUCTOS

Productos
Idfab Idproducto Descripcion Precio Existencias
aci 41001 arandela $58.00 277
aci 41002 bisagra $80.00 167
aci 41003 art t3 $112.00 207
aci 41004 art t4 $123.00 139
aci 4100x junta $26.00 37
aci 4100y extractor $2,888.00 25
aci 4100z mont $2,625.00 28
bic 41003 manivela $652.00 3
Productos
Idfab Idproducto Descripcion Precio Existencias
bic 41089 rodamiento $225.00 78
bic 41672 plato $180.00 0
fea 112 cubo $148.00 115
fea 114 cubo $243.00 15
imm 773c reostato $975.00 28
imm 775c reostato 2 $1,425.00 5
imm 779c reostato 3 $1,875.00 0
imm 887h caja clavos $54.00 223
imm 887p pemo $25.00 24
imm 887x manivela $475.00 32
qsa xk47 red $355.00 38
qsa xk48 red $134.00 203
qsa xk48a red $117.00 37
rei 2a44g pas $350.00 14
rei 2a44l bomba l $4,500.00 12
rei 2a44r bomba r $4,500.00 12
rei 2a45c junta $79.00 210

 PEDIDOS CLAVE PRIMARIA ES CODIGO

Pedidos
Codigo Numpedido Fechapedido Clie Rep Fab Producto Cant Importe
1 110036 1/2/1997 2107 110 aci 4100z 9 $22,500.00
2 110036 1/2/1997 2117 106 rei 2a44l 7 $31,500.00
3 112963 5/10/1997 2103 105 aci 41004 28 $3,276.00
4 112968 1/11/1990 2102 101 aci 41004 34 $3,978.00
5 112975 2/11/1997 2111 103 rei 2a44g 6 $2,100.00
6 112979 10/12/1989 2114 108 aci 4100z 6 $15,000.00
7 112983 5/10/1997 2103 105 aci 41004 6 $702.00
8 112987 1/1/1997 2103 105 aci 4100y 11 $27,500.00
9 112989 12/10/1997 2101 106 fea 114 6 $1,458.00
10 112992 4/15/1990 2118 108 aci 41002 10 $760.00
11 112993 3/10/1997 2106 102 rei 2a45c 24 $1,896.00
12 112997 4/4/1997 2124 107 bic 41003 1 $652.00
13 113003 2/5/1997 2108 109 imm 779c 3 $5,625.00
14 113007 1/1/1997 2112 108 imm 773c 3 $2,925.00
15 113012 5/5/1997 2111 105 aci 41003 35 $3,745.00
Pedidos
Codigo Numpedido Fechapedido Clie Rep Fab Producto Cant Importe
16 113013 8/6/1997 2118 108 bic 41003 1 $652.00
17 113024 7/4/1997 2114 108 qsa xk47 20 $7,100.00
18 113027 2/5/1997 2103 105 aci 41002 54 $4,104.00
19 113034 11/5/1997 2107 110 rei 2a45c 8 $632.00
20 113042 1/1/1997 2113 101 rei 2a44r 5 $22,500.00
21 113045 7/2/1997 2112 108 rei 2a44r 10 $45,000.00
22 113048 7/2/1997 2120 102 imm 779c 2 $3,750.00
23 113049 4/4/1997 2118 108 qsa xk47 2 $776.00
24 113051 7/6/1997 2118 108 qsa xk47 4 $1,420.00
25 113055 4/1/2009 2108 101 aci 4100x 6 $150.00
26 113057 11/1/1997 2111 103 aci 4100x 24 $600.00
27 113058 7/4/1989 2108 109 fea 112 10 $1,480.00
28 113062 7/4/1989 2124 107 bic 41003 10 $2,430.00
29 113065 6/3/1997 2106 102 qsa xk47 6 $2,130.00
30 113069 8/1/1997 2109 107 imm 773c 22 $31,350.00

 REALICE LOS SIGUIENTES EJERCICIOS DE CONSULTA Y EXPLIQUE EN SU CUADERNO


DETALLADAMENTE.

1 SELECT oficinas.oficina, ciudad, numemp, nombre

FROM oficinas INNER JOIN empleados ON oficinas.oficina = empleados.oficina

WHERE region = 'este';

2 SELECT oficinas.oficina, ciudad, numemp, nombre

FROM oficinas LEFT JOIN empleados ON oficinas.oficina = empleados.oficina

WHERE region = 'este';

3 SELECT oficinas.oficina, ciudad, numemp, nombre

FROM oficinas RIGHT JOIN empleados ON oficinas.oficina = empleados.oficina

WHERE region = 'este';


4 SELECT pedidos.numpedido, pedidos.importe, clientes.nombre AS cliente, clientes.limitecredito

FROM pedidos INNER JOIN clientes ON pedidos.clie = clientes.numclie;

5 SELECT empleados.*, ciudad, region

FROM empleados LEFT JOIN oficinas ON empleados.oficina = oficinas.oficina;

6 SELECT oficinas.*, nombre AS director

FROM empleados RIGHT JOIN oficinas ON empleados.oficina = oficinas.oficina

WHERE objetivo > 600000;

7 SELECT numpedido, importe, empleados.nombre AS representante, clientes.nombre AS cliente

FROM (pedidos INNER JOIN clientes ON pedidos.clie =clientes.numclie) INNER JOIN empleados ON
pedidos.rep = empleados.numemp

WHERE importe > 25000;

8 SELECT empleados.*

FROM empleados INNER JOIN pedidos ON pedidos.rep = empleados.numemp

WHERE fechapedido = contrato;


9 SELECT empleados.*, jefes.numemp AS num_jefe, jefes.nombre AS nombre_jefe, jefes.cuota AS
cuota_jefe

FROM empleados INNER JOIN empleados AS jefes ON empleados.jefe=jefes.numemp

WHERE empleados.cuota > jefes.cuota;

10 SELECT numemp

FROM empleados LEFT JOIN pedidos ON pedidos.rep = empleados.numemp

WHERE importe > 10000 OR cuota < 10000;

11 SELECT rep

FROM pedidos

WHERE importe > 10000

UNION SELECT numemp

FROM empleados

WHERE cuota < 10000;

12 SELECT AVG (cuota) AS cuota_media, AVG (ventas) AS ventas_media

FROM empleados;

13 SELECT AVG (importe) AS importe_medio, SUM(importe) AS Importe_total, AVG(importe/cant) AS


precio_venta_medio

FROM Pedidos;
14 SELECT AVG(precio) AS p_medio_ACI

FROM Productos

WHERE idfab='ACI';

15 SELECT SUM(importe) AS total_pedidos_V_Pantalla

FROM Empleados INNER JOIN pedidos ON empleados.numemp =pedidos.rep

WHERE nombre= 'Vicente Pantalla';

16 SELECT MIN(fechapedido) AS Primer_pedido

FROM Pedidos;

17 SELECT COUNT(*) AS cuantos_pedidos_mayores

FROM Pedidos

WHERE importe > 25000;

18 SELECT oficina, COUNT(*) AS cuantos_empleados

FROM Empleados

GROUP BY oficina;
19 SELECT oficinas.oficina, COUNT (numemp) AS Cuantos_empleados

FROM empleados RIGHT JOIN oficinas ON empleados.oficina = oficinas.oficina

GROUP BY oficinas.oficina;

20 SELECT numemp, nombre, clie AS Cliente, SUM(importe) AS ['Total Vendido']

FROM empleados INNER JOIN pedidos ON pedidos.rep = empleados.numemp

GROUP BY numemp, nombre, clie;

21 SELECT numemp, nombre, clie AS Cliente, SUM(importe) AS ['Total Vendido']

FROM empleados LEFT JOIN pedidos ON pedidos.rep = empleados.numemp

GROUP BY numemp, nombre, clie;

22 SELECT rep, AVG(importe) AS Importe_medio

FROM Pedidos

GROUP BY rep

HAVING SUM(importe) > 30000;

23 SELECT descripcion, precio, SUM(importe) AS Total_pedido

FROM Productos INNER JOIN pedidos ON (pedidos.producto = productos.idproducto) AND (pedidos.fab


= productos.idfab)

GROUP BY idfab, idproducto, descripcion, precio, existencias

HAVING SUM(importe) > existencias * 0.75 ORDER BY 3;


24 SELECT DISTINCT oficina

FROM Empleados

WHERE ventas > cuota;

25 SELECT COUNT (*) AS cuantas_oficinas

FROM distintas_oficinas;

26 SELECT nombre

FROM clientes

WHERE repclie = (SELECT numemp FROM empleados WHERE nombre = 'Alvaro Jaumes');

27 SELECT numemp, nombre, oficina

FROM empleados

WHERE oficina IN (SELECT oficina FROM oficinas WHERE ventas > objetivo);

28 SELECT numemp, nombre, oficina

FROM empleados

WHERE EXISTS (SELECT * FROM oficinas WHERE empleados.oficina = oficinas.oficina AND ventas >
objetivo);
29 SELECT numemp, nombre, oficina

FROM empleados

WHERE oficina = ANY (SELECT oficina FROM oficinas WHERE ventas > objetivo);

30 SELECT numemp, nombre, oficina

FROM Empleados

WHERE NOT EXISTS (SELECT * FROM oficinas WHERE empleados.oficina = oficinas.oficina AND dir=108);

31 SELECT numemp, nombre, oficina

FROM Empleados

WHERE oficina NOT IN (SELECT oficina FROM oficinas WHERE dir =108);

32 SELECT numemp, nombre, oficina

FROM Empleados

WHERE (oficina NOT IN (SELECT oficina FROM oficinas WHERE dir = 108)) OR (oficina IS NULL);

33 SELECT numemp, nombre, oficina

FROM Empleados

WHERE oficina <> ALL (SELECT oficina FROM oficinas WHERE dir = 108);
34 SELECT idfab, idproducto, descripcion

FROM Productos

WHERE NOT EXISTS (SELECT * FROM pedidos WHERE fab = idfab AND producto = idproducto AND
importe >=25000);

35 SELECT numclie, nombre

FROM Clientes

WHERE repclie IN (SELECT numemp FROM empleados WHERE nombre = 'Ana Bustamante') AND numclie
NOT IN (SELECT clie FROM pedidos WHERE importe >3000);

36 SELECT *

FROM Oficinas

WHERE EXISTS (SELECT * FROM empleados WHERE ventas > objetivo * 0.55);

37 SELECT *

FROM Oficinas

WHERE ((objetivo*0.55)<= ALL (SELECT ventas FROM empleados WHERE empleados.oficina =


oficinas.oficina)) AND (EXISTS (SELECT * FROM empleados WHERE empleados.oficina = oficinas.oficina));

38 SELECT *

FROM Oficinas

WHERE (objetivo*.5)<=(SELECT MIN (ventas) FROM empleados WHERE empleados.oficina =


oficinas.oficina);
39 SELECT *

FROM Oficinas

WHERE objetivo > (SELECT SUM (cuota) FROM empleados WHERE empleados.oficina =oficinas.oficina);

40 SELECT * INTO nuevaempleados

FROM Empleados;

41 UPDATE productos INNER JOIN nuevaproductos ON (productos.idfab=nuevaproductos.idfab) AND


(productos.idproducto=nuevaproductos.idproducto) SET productos.precio = nuevaproductos.precio;

42 INSERT INTO oficinas

SELECT *

FROM nuevaoficinas

WHERE oficina NOT IN (SELECT oficina FROM oficinas);

43 INSERT INTO pedidos

SELECT *

FROM nuevapedidos

WHERE rep = 105;


44 UPDATE empleados SET oficina = 21

WHERE oficina = 30;

45 SELECT * INTO nuevaoficinas

FROM Oficinas;

46 SELECT * INTO nuevaproductos

FROM Productos;

47 SELECT * INTO nuevapedidos

FROM Pedidos;

48 UPDATE productos SET precio = precio * 1.05

WHERE idfab = 'ACI';

49 INSERT INTO oficinas ( oficina, region, ciudad, objetivo )

VALUES (30, 'centro', 'Madrid', 100000);


50 INSERT INTO oficinas ( oficina, region, ciudad, dir, objetivo, ventas )

VALUES (30, 'centro', 'Madrid', null, 100000, 0);

51 INSERT INTO oficinas

VALUES (30, 'Madrid', 'centro', null, 100000, 0);

52 UPDATE empleados SET oficina = 30

WHERE oficina = 21;

53 DELETE *

FROM pedidos

WHERE rep=105;

54 DELETE *

FROM oficinas

WHERE NOT EXISTS (SELECT * FROM empleados WHERE empleados.oficina = oficinas.oficina);

55 DELETE *

FROM oficinas

WHERE oficina NOT IN (SELECT oficina FROM empleados);


56 DELETE oficinas.*

FROM oficinas LEFT JOIN empleados ON oficinas.oficina = empleados.oficina

WHERE empleados.numemp IS NULL;

57 TRANSFORM SUM (importe)

SELECT rep AS empleados

FROM Pedidos

WHERE YEAR(fechapedido) =1990

GROUP BY rep

PIVOT MONTH (fechapedido);

58 TRANSFORM SUM (importe)

SELECT numemp AS empleado, nombre

FROM pedidos INNER JOIN empleados ON pedidos.rep=empleados.numemp

WHERE YEAR (fechapedido) = 1990

GROUP BY numemp, nombre

PIVOT MONTH (fechapedido);

59 TRANSFORM SUM (importe)

SELECT oficina

FROM pedidos RIGHT JOIN empleados ON pedidos.rep =empleados.numemp

GROUP BY oficina
PIVOT YEAR (fechapedido)&"/"&MONTH (fechapedido);

60 TRANSFORM COUNT (numemp)

SELECT oficina

FROM empleados

GROUP BY oficina

PIVOT YEAR(contrato);

61 TRANSFORM SUM(importe)

SELECT YEAR(fechapedido) AS Año

FROM (pedidos INNER JOIN empleados ON pedidos.rep = empleados.numemp) INNER JOIN oficinas ON
empleados.oficina = oficinas.oficina

GROUP BY YEAR(fechapedido)

PIVOT region;

61 CREATE INDEX cp ON pedidos (numpedido) WITH PRIMARY ;

62 CREATE TABLE oficinas (oficina INT PRIMARY KEY, ciudad TEXT(30), region TEXT(20), dir INT
CONSTRAINT cf_dir REFERENCES empleados, objetivo CURRENCY, ventas CURRENCY );

63 CREATE TABLE productos (idfab TEXT(10), idproducto TEXT(20), descripcion TEXT(30) NOT NULL,
precio CURRENCY NOT NULL, existencias INT , CONSTRAINT cp PRIMARY KEY (idfab,idproducto) );
64 CREATE TABLE clientes ( numclie INT , nombre TEXT(30) NOT NULL, repclie INT CONSTRAINT
cf_repclie REFERENCES empleados, CONSTRAINT cp PRIMARY KEY (numclie) ) ;

65 CREATE TABLE pedidos ( codigo COUNTER, numpedido INT PRIMARY KEY, fechapedido DATETIME
NOT NULL, clie INT NOT NULL, rep INT NOT NULL, fab TEXT(10) NOT NULL, producto TEXT(20) NOT NULL,
cant INT NOT NULL, importe CURRENCY NOT NULL, CONSTRAINT cf_clie FOREIGN KEY (clie) REFERENCES
clientes, CONSTRAINT cf_rep FOREIGN KEY (rep) REFERENCES empleados, CONSTRAINT cf_prod
FOREIGN KEY (fab,producto) REFERENCES productos );

66 ALTER TABLE clientes

ADD COLUMN limitecredito MONEY;

67 ALTER TABLE empleados

ADD CONSTRAINT cf_oficina FOREIGN KEY (oficina) REFERENCES oficinas, CONSTRAINT cf_director
FOREIGN KEY (director) REFERENCES empleados;

68 ALTER TABLE empleados

ADD CONSTRAINT u_nombre UNIQUE (nombre);

69 CREATE UNIQUE INDEX u_nombre ON empleados (nombre);

70 ALTER TABLE pedidos

ADD CONSTRAINT cp PRIMARY KEY (numpedido);


71 CREATE INDEX cp ON pedidos (numpedido) WITH PRIMARY ;

72 CREATE INDEX i_region ON oficinas (region) ;

73 DROP INDEX i_region ON oficinas ;

Das könnte Ihnen auch gefallen