0% encontró este documento útil (0 votos)
100 vistas12 páginas

Consultas SQL para Gestión de Datos

Este documento contiene varias consultas SQL simples para seleccionar, ordenar e incluir cálculos en campos de tablas de una base de datos. Algunas consultas unen tablas.

Cargado por

Livesk Live
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
100 vistas12 páginas

Consultas SQL para Gestión de Datos

Este documento contiene varias consultas SQL simples para seleccionar, ordenar e incluir cálculos en campos de tablas de una base de datos. Algunas consultas unen tablas.

Cargado por

Livesk Live
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

CONSULTAS SIMPLES

SELECT idfab,idproducto,descripcion,precio, (precio * 1.16) AS iva_incluido


FROM productos

SELECT numpedido, fab, producto, cant, importe / cant AS precio_unitario, importe


FROM pedidos

SELECT nombre, date() - contrato AS dias_trabajados, year(date()) - edad AS


ao_nacimiento
FROM empleados

SELECT *
FROM clientes
ORDER BY repclie

SELECT *
FROM oficinas
ORDER BY region, ciudad, oficina DESC

SELECT *
FROM pedidos
ORDER BY fechapedido

SELECT TOP 4 *
FROM pedidos
ORDER importe DESC

SELECT TOP 5 numpedido, fab, producto, cant, importe / cant AS precio_unitario,


importe
FROM pedidos
ORDER BY 5

SELECT *
FROM pedidos
WHERE MONTH(fechapedido) = 3

10

SELECT numemp
FROM empleados
WHERE oficina IS NOT NULL

11

SELECT oficina
FROM oficinas
WHERE dir IS NULL

12

SELECT *
FROM oficinas
WHERE region IN ('norte','este')
ORDER BY region DESC

13

SELECT *
FROM empleados
WHERE nombre LIKE 'Julia *'

14

SELECT *
FROM productos
WHERE idproducto LIKE '*x'
1.

SELECT oficinas.oficina, ciudad, numemp, nombre


FROM oficinas INNER JOIN empleados ON oficinas.oficina = empleados.oficina
WHERE region = 'este'

SELECT numpedido, importe,


clientes.nombre AS cliente, limitecredito
FROM pedidos INNER JOIN clientes ON
pedidos.clie = clientes.numclie

SELECT empleados.*, ciudad, region


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

SELECT oficinas.*, nombre AS director


FROM empleados RIGHT JOIN oficinas ON empleados.numemp = oficinas.dir
WHERE objetivo > 600000

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

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
7

SELECT empleados.*, jefes.numemp AS num_jefe, jefes.nombre AS nombre_jefe,


jefes.cuota AS cuota_jefe
FROM empleados INNER JOIN empleados jefes ON empleados.jefe = jefes.numemp
WHERE empleados.cuota > jefes.cuota

SELECT numemp
FROM empleados LEFT JOIN pedidos ON pedidos.rep = empleados.numemp
WHERE importe > 10000 OR cuota < 10000

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


FROM empleados

SELECT AVG(importe) AS importe_medio, SUM(importe) AS importe_total,


AVG(importe/cant) AS precio_venta_medio
FROM pedidos

SELECT AVG(precio) AS p_medio_ACI


FROM productos
WHERE idfab = 'ACI'

SELECT SUM(importe) AS total_pedidos_V_Pantalla


FROM empleados INNER JOIN pedidos ON empleados.numemp = pedidos.rep
WHERE nombre = 'Vicente Pantalla'

SELECT MIN(fechapedido) AS primer_pedido


FROM pedidos

SELECT COUNT(*) AS cuantos_pedidos_mayores


FROM pedidos
WHERE importe > 25000
7

SELECT oficina, COUNT(*) AS cuantos_empleados


FROM empleados
GROUP BY oficina

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

SELECT rep, AVG(importe) AS importe_medio


FROM pedidos
GROUP BY rep
HAVING SUM(importe) > 30000

10

SELECT descripcion, precio, SUM(importe) AS total_pedido


FROM productos INNER JOIN pedidos ON pedidos.fab = productos.idfab AND
pedidos.producto = productos.idproducto
GROUP BY idfab, idproducto, descripcion, precio, existencias
HAVING SUM(importe) > existencias * 0.75
ORDER BY 3

11

Consulta: distintas_oficinas
SELECT DISTINCT oficina
FROM empleados
WHERE ventas > cuota
Consulta: sumaria11
SELECT COUNT(*) AS cuantas_oficinas
FROM distintas_oficinas

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

SELECT numemp, nombre, oficina


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

SELECT numemp, nombre, oficina


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

SELECT numemp, nombre, oficina


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

4.

SELECT idfab, idproducto, descripcion


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

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 AND clie IS NOT
NULL);

SELECT *
FROM oficinas
WHERE EXISTS ( SELECT * FROM empleados WHERE empleados.oficina=oficinas.oficina
AND ventas > objetivo * 0.55);

7
SELECT *
FROM oficinas
WHERE (objetivo * 0.5) <= ALL ( SELECT ventas FROM empleados WHERE
empleados.oficina = oficinas.oficina AND ventas IS NOT NULL);

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

1.

SELECT * INTO nuevaempleados


FROM empleados;

SELECT * INTO nuevaoficinas


FROM oficinas;

SELECT * INTO nuevaproductos


FROM productos;

SELECT * INTO nuevapedidos


FROM pedidos;

UPDATE productos
SET precio = precio * 1.05 WHERE idfab = 'ACI';

6
INSERT INTO oficinas ( oficina, region, ciudad, objetivo )
VALUES ( 30, 'centro','Madrid', 100000 );

UPDATE empleados SET oficina = 30 WHERE oficina = 21;

8.

DELETE FROM pedidos WHERE rep = 105;

DELETE FROM oficinas WHERE NOT EXISTS (SELECT *


FROM empleados WHERE empleados.oficina = oficinas.oficina);

10

UPDATE productos INNER JOIN nuevaproductos


ON ( productos.idfab = nuevaproductos.idfab) AND (productos.idproducto =
nuevaproductos.idproducto)
SET productos.precio = nuevaproductos.precio;

11

INSERT INTO oficinas


SELECT * FROM nuevaoficinas
WHERE oficina NOT IN (SELECT oficina FROM oficinas);

12

INSERT INTO pedidos


SELECT * from nuevapedidos WHERE rep = 105;

13

UPDATE empleados
SET oficina = 21 WHERE oficina = 30;

TRANSFORM SUM(importe)

SELECT rep AS empleado


FROM pedidos
WHERE year(fechapedido)=1990
GROUP BY rep

PIVOT MONTH(fechapedido);

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);

TRANSFORM SUM(importe)

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

GROUP BY oficina

PIVOT year(fechapedido)&"/"&MONTH(fechapedido);

TRANSFORM COUNT(numemp)

SELECT oficina
FROM empleados

GROUP BY oficina

PIVOT year(contrato);

5
TRANSFORM SUM(importe)

SELECT YEAR(fechapedido) AS anyo


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

GROUP BY YEAR(fechapedido)

PIVOT region;

CREATE TABLE empleados (


numemp INTEGER PRIMARY KEY,
nombre TEXT(30) NOT NULL,
edad INTEGER,
oficina INTEGER,
titulo CHAR(20),
contrato DATETIME NOT NULL,
director INTEGER,
cuota CURRENCY,
ventas MONEY);

CREATE TABLE oficinas (


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

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) );
4.

CREATE TABLE clientes (


numclie INT ,
nombre TEXT(30) NOT NULL,
repclie INT CONSTRAINT cf_repclie REFERENCES empleados,
CONSTRAINT cp PRIMARY KEY (numclie) ) ;

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 );

ALTER TABLE clientes


ADD COLUMN limitecredito MONEY;

ALTER TABLE empleados


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

ALTER TABLE empleados


ADD CONSTRAINT u_nombre UNIQUE (nombre);

ALTER TABLE pedidos


ADD CONSTRAINT cp PRIMARY KEY (numpedido);

10 CREATE INDEX i_region ON oficinas (region) ;


10 DROP INDEX i_region ON oficinas ;

También podría gustarte