Arturo Daniel Córdova Ortega
/* COAD - Criando o banco de dados
CRIAR BANCO DE DADOS ejercicioSQL
USE ejercicioSQL
CRIE A TABELA departamento
(
codDepto VARCHAR (4)
nomeDpto VARCHAR(20) NOT NULL,
cidade VARCHAR (15)
codDirector VARCHAR(12)
);
CRIE A TABELA empregados
(
nDIEmp VARCHAR (12) NOT NULL,
nomEmp VARCHAR(30) NÃO NULO,
sexEmp CHAR(1) NOT NULL CHECK (SexEmp IN('M','F'))
fecNac DATE NOT NULL,
fecIncorporacao DATA NÃO NULA,
salEmp FLOAT NOT NULL,
comissaoE FLOAT NÃO NULO,
cargoE VARCHAR (15) NOT NULL,
jefeID VARCHAR (12) NOT NULL,
codDepto VARCHAR (4) NÃO NULO,
);*/
/*COAD - Inserindo os dados na tabela departamento
INSERT INTO departamento (CodDepto, nombreDpto, ciudad, codDirector)
VALORES
('1000','Gerencia','Cali','31.840.269'),
('1500','Produccion','Cali','16.211.383'),
('2000','Ventas','Cali','31.178.144'),
('300','Investigacion','Cali','16.759.060'),
('3500','Mercadeo','Cali','22.222.222'),
('2100','Ventas','Popayan','31.751.219'),
('2200','Ventas','Buga','768.782'),
('2300','Ventas','Cartago','737.689'),
('4000','Mantenimiento','Cali','333.333.333'),
('4100','Mantenimiento','Popayan','888.888'),
('4200','Mantenimiento','Buga','11.111.111'),
('4300','Mantenimiento','Cartago','444.444');*/
/*COAD - Inserindo dados da tabela empregados
INSERIR NO empregados
(nDIEmp,nomEmp,sexEmp,fecNac,fecIncorporacion,salEmp,comisionE,cargoE,jefeID,codDepto)
VALUES
31.840.269, Maria
Rojas','F','1959/01/15','1990/05/16',6250000,1500000,'Gerente','NULL','1000')
('16.211.383','Luis Perez','M','1956/02/25','2000/01/01',5050000,0,'Director','31.840.269','1500'),
('31.178.144','Rosa Angulo','F','1957/03/15','1998/08/16',3250000,3500000,'Jefe
Vendas','31.840.269','2000')
('16.759.060','Dario
["Casas","M","1960/04/05","1992/11/01",4500000,500000,"Investigador","31.840.269",3000]
('22.222.222','Carla Lopez','F','1974/05/11','2005/07/16',4500000,500000,'Jefe
Mercadeo','31.840.269','3500')
1.751.219, Melissa
["Roa","F","1960/06/19","2001/03/16",2250000,2500000,"Vendedor","31.178.144","2100"]
768.782, Joaquim
Rosas','M','1947/07/07','1990/05/17',2250000,2500000,'Vendedor','31.178.144','2200')
('737.689','Mário
["Llano","M","1945/08/30","1990/05/16",2250000,2500000,"Vendedor","31.178.144","2300"]
('333.333.333','Elisa Rojas','F','1979/09/28','2004/06/01',3000000,1000000,'Jefe
Mecânicos','31.178.144','4000')
('888.888','Ivan
Duarte','M','12/08/1955','16/05/1998',1050000,200000,'Mecânico','333.333.333','4100')
('11.111.111','Irene
Diaz','F','1979/09/28','2004/06/01',1050000,200000,'Mecanico','333.333.333','4200'),
444.444, Abel
Gomez','M','1929/12/24','2000/10/01',1050000,200000,'Mecanico','333.333.333','4300'),
('1.130.222','Jose
Giraldo','M','1985/01/23','2000/11/01',1200000,400000,'Asesor','22.222.222','4100'),
('19.709.802','William
Daza','M','1982/10/09','1999/12/16',2250000,1000000,'Investigador','16.211.383','1500')
('31.174.099','Diana'
Solarte','F','1957/11/19','1990/05/16',1250000,500000,'Secretaria','31.840.269','1000')
('1.130.777','Marcos
cortez','M','1986/06/23','2000/04/16',2250000,500000,'Mecanico','333.333.333','4000')
('1.130.782','Antonio
Gil','M','1980/01/23','2010/04/26',850000,1500000,'Tecnico','16.211.383','1500'),
Marisol
Pulido','F','1979/10/01','1990/05/16',3250000,1000000,'Investigador','16.759.060','3000'),
('333.333.335','Ana
Moreno','F','1992/01/05','2004/06/01',1200000,400000,'Secretaria','16.759.060','3000'),
('1.130.333','Pedro
Blanco','M','1987/10/28','2000/10/01',800000,3000000,'Vendedor','31.178.144','2000')
1.130.444, Jesus
Alfonso','M','1988/03/14','2000/10/01',800000,3500000,'Vendedor','31.178.144','2000'),
Carolina
Rios','F','1992/02/15','2000/10/01',1250000,500000,'Secretaria','16.211.383','1500')
('333.333.337','Edith')
Muñoz','F','1992/03/31','2000/10/01',800000,3600000,'Vendedor','31.178.144','2100'),
1.130.555, Julian
Mora','M','1989/07/03','2000/10/01',800000,3100000,'Vendedor','31.178.144','2200'),
1.130.666, Manuel
Millan','M','1990/12/08','2004/06/01',800000,3700000,'Vendedor','31.178.144','2300');*/
/*COAD - 1. Obter os dados completos dos empregados*/
SELECIONAR * DOS empregados;
/*COAD - 2. Obtener los datos de los departamento*/
SELECIONE * DO departamento;
/*Obtener los datos de los empleados con cargo 'Secretaria'.
selecionar
doempeado
wherecargo='SECRETARIA';
4. Obter o nome e o salário dos funcionários.
selecionar nomEmp, salEmp de empregado;
5. Obter os dados dos funcionários vendedores, ordenados por nome.
selecionar * do empregados
wherecargo='vendedor'
pedido por nomEmp
6. Listar o nome dos departamentos
selecionarnomeDptodedepartamento;
7. Listar o nome dos departamentos, ordenado por nome
selecione distinctnombreDpto de departamento ordem por nombreDpto;
8. Listar el nombre de los departamentos, ordenado por ciudad
selectnombreDpto,ciudadfromdepartamento
9. Listar o nome dos departamentos, ordenados por cidade, em ordem
inverso
selecionar nomeDpto, cidade de departamento ordenar por cidade desc;
10. Obtener el nombre y cargo de todos los empleados, ordenado por salario
selecione nomEmp, cargo de empregado ordem por salEmp;
11. Obter o nome e cargo de todos os funcionários, ordenado por cargo e
por salário
SELECIONAR nomEmp, cargo, salEmp DE empregado
ORDER BYcargo,salEmp;
12. Obtener el nombre y cargo de todos los empleados, en orden inverso por
carga
SELECIONAR nomEmp, cargo DE empregado
ORDER BY cargo DESC;
13. Listar los salarios y comisiones de los empleados del departamento 2000
SELECIONAR nomEmp, salEmp, comis DE Empeado
WHEREnroDepto='2000';
14. Listar los salarios y comisiones de los empleados del departamento 2000,
ordenado
por comissão
SELECIONAR nomEmp, salEmp, comis DE Empeado
ONDE nroDepto='2000'
ORDER BY comis;
15. Listar todas as comissões
SELECIONE comis DE Empregado;
16. Listar as comissões que sejam diferentes, ordenadas por valor
SELECIONAR DISTINCT comis DE Empeado
ORDER BY comis;
17. Listar los diferentes salarios
SELECIONAR DISTINTO salEmp DE Empeado
ORDEM POR salEmp;
18. Obter o valor total a pagar que resulta de somar aos empregados do
departamento 3000 uma bonificação de R$500.000, em ordem alfabética do
funcionário
SELECIONA nomEmp, salEmp, 'Pago Total = $', salEmp+500000 DE Empregado
ONDE nroDepto='3000';
19. Obter a lista dos funcionários que ganham uma comissão superior à sua
sueldo.
SELECTnDIEmp,nomEmp,salEmp,comisFROMEmpeado
ONDEcomis>salEmp;
20. Listar os colaboradores cuja comissão é menor ou igual a 30% do seu
salário.
SELECIONAR nDI Emp, nomEmp, salEmp, comis FROM Empeado
ONDEcomis<=salEmp*0.30;
21. Elabore un listado donde para cada fila, figure ‘Nombre’ y ‘Cargo’ antes
do valor
respectivo para cada empregado
SELECIONAR 'Nome: ', nomEmp, 'Cargo: ', cargo DE Empeado;
22. Encontrar o salário e a comissão daqueles empregados cujo número de
documento
de identidade é superior ao '19.709.802'
SELECIONE nDIEmp, nomEmp, salEmp, comis FROM Empeado
ONDE MORREu>'19.709.802';
23. Listar os empregados cujo salário é menor ou igual a 40% do seu
comissãoSELECTnomEmp,salEmp,comisFROMEmpregado
ONDEsalEmp<=comis*0.40;
24. Divida los empleados, generando un grupo cuyo nombre inicie por la letra
Je
termine en la letra Z. Liste estos empleados y su cargo por orden alfabético.
SELECIONAR [Link], [Link] DE (SELECIONAR * DE Empeado ONDE nomEmp > 'J' E nomEmp < 'z') JZ
ORDER BYnomEmp;
25. Listar o salário, a comissão, o salário total (salário + comissão)
documento de
identidade do empregado e nome, daqueles empregados que têm
comissão superior
um $1.000.000, ordenar o relatório pelo número do documento de identidade
SELECIONAR nDI Emp, nomEmp, salEmp, comis, (salEmp + comis) AS total FROM Empleado
ONDEcomis>1000000
ORDER BYnDIEmp;
26. Obter uma lista semelhante à anterior, mas com aqueles funcionários que
Não têm
comissão SELECIONAR nDI Emp, nomEmp, salEmp, comis, (salEmp + comis) AS total FROM Empregado
ONDEcomis=0
ORDEM POR nDIEmp;
27. Hallar el nombre de los empleados que tienen un salario superior a
R$1.000.000, y
têm como chefe o empregado com documento de identidade '31.840.269'
SELECIONAR nomeEmp FROM Empregado
ONDEsalEmp>1000000EjefeDI='31.840.269';
28. Encontrar o conjunto complementar do resultado do exercício anterior.
SELECIONAR nomEmp DE Empregado
ONDEsalEmp<=1000000E chefeDI='31.840.269';
29. Encontrar os empregados cujo nome não contém a string "MA"
SELECIONAR nomEmp DE Empregado
ONDE nomEmp LIKE 'Ma%';
30. Obter os nomes dos departamentos que não sejam "Vendas" nem
“Investigação” NI 'MANUTENÇÃO', ordenados por cidade.
SELECIONAR nomeDpto, cidade DE Departamento
WHEREnombreDptoNOT IN ('VENTAS','INVESTIGAÇÃO','MANUTENÇÃO')
ORDENAR POR ciudad;
31. Obter o nome e o departamento dos empregados com cargo
'Secretaria' ou 'Vendedor', que não trabalham no departamento de
“PRODUÇÃO”, cujo salário é superior a R$1.000.000, ordenados por data
de incorporação.
[Link],[Link],[Link] D,empeado E
ONDE cargo NÃO EM ('Secretaria', 'Vendedor') E salEmp > 1000000 E [Link] = [Link] E
[Link]ÃO ESTÁ EM
(SELECIONE [Link] DA Departamento F ONDE [Link]='PRODUÇÃO');
32. Obter informações dos funcionários cujo nome tem exatamente
caracteres
SELECIONAR nomEmp DE Empeado
ONDE nomEmplike '___________'
33. Obtener información de los empleados cuyo nombre tiene al menos 11
caracteres
selecione nomeEmp de EMPLEADO
ONDE nomEmplike '___________%';
34. Listar os dados dos funcionários cujo nome começa com a letra 'M', seu
salario es mayor a $800.000 o reciben comisión y trabajan para el
departamento de 'VENTAS'
selecionar nomEmp de EMPLEADO
WHEREnomEmp 800000 comis 0like'M%' e (salEmp>800000oucomis>0);
35. Obtener los nombres, salarios y comisiones de los empleados que reciben
um salário
situado entre a metade da comissão a própria comissão
SELECTnomEmp,salEmp,comisFROMEmpeado
ONDEsalEmp>=comis/2E E
salEmp<=comis;
36. Suponga que la empresa va a aplicar un reajuste salarial del 7%. Listar los
nombres
dos empregados, seu salário atual e seu novo salário, indicando para cada
um deles
se tem ou não comissão
SELECIONAr nomEmp, salEmp, (salEmp * 1,07), comis FROM Empeado;
37. Obtener la información disponible del empleado cuyo número de
documento de identidad sea: '31.178.144', '16.759.060', '1.751.219',
'768.782', '737.689', '19.709.802','31.174.099', '1.130.782'
SELECIONAR nDIEmp, nomEmp DE Empeado
ONDE
nDIEmpIN ('31.178.144','16.759.060','1.751.219','768.782','737.689','19.709.802','31.174.099','1.130.782');
38. Entregar uma lista de todos os funcionários ordenada por sua
departamento, e alfabético dentro do departamento.
SELECIONAR nDIEmp, nomEmp, nroDepto DE Empleado
ORDER BY nroDepto, nomEmp;
39. Entregar o salário mais alto da empresa.
SELECIONAR nomeEmp DE Empregado
ONDE salEmp IN (SELECIONAR MAX(salEmp)
DEEmpregado);
40. Entregar el total a pagar por comisiones, y el número de empleados que
elas as recebem.
SELECIONAR contagem(nDIEmp), soma(comis) DE Empregado
ONDEcomis>0;
41. Entregar o nome do último empregado da lista em ordem alfabética.
SELECIONAR MÁXIMO(nomEmp) DE Empregado;
42. Hallar el salario más alto, el más bajo y la diferencia entre ellos.
SELECIONAMAX(salEmp),MIN(salEmp),(MAX(salEmp) -MIN(salEmp))DODEmpregado;
43. Conocido el resultado anterior, entregar el nombre de los empleados que
recebem o salário mais alto e o mais baixo. Quanto somam esses salários?
SELECIONAR MAX(salEmp), MIN(salEmp),
(MÁX(salEmp) + MÍN(salEmp)) DE Empeado;
44. Entregar el número de empleados de sexo femenino y de sexo masculino,
por departamento.
SELECIONAR nroDepto, sexoEmp, CONTAR(nomEmp) DE empregado
AGRUPAR POR nroDepto, sexEmp;
45. Encontrar o salário médio por departamento.
SELECIONAR nroDepto, MÉDIA(salEmp) DE Empeado
AGRUPAR POR nroDepto;
46. Encontrar o salário médio por departamento, considerando aqueles
empregados cujo salário supera R$900.000, e aqueles com salários inferiores a
$575.000. Entregar el código y el nombre del departamento.
[Link], [Link], [Link]
DO Departamento D, (SELECIONAR codDepto, MÉDIA(salEmp) AS pro
DE Empregado
ONDE salEmp > 900000 E salEmp > 575000 AGRUPAR POR codDepto) N ONDE [Link] = [Link];
47. Entregar a lista dos empregados cujo salário é maior ou igual a
promedio de la empresa. Ordenarlo por departamento.
[Link],[Link],[Link],[Link] E,(SELECIONEAVG(salEmp)COMOproTFROM
Empeado)N
ONDE [Link] >= [Link]
ORDENAR POR nroDepto;
48. Hallar los departamentos que tienen más de tres (3) empleados. Entregar
o número de empregados desses departamentos.
SELECIONAR [Link], [Link], [Link] DA departamento D, (SELECIONAR nroDepto, CONTAR(nDIEmp) COMO nro
DE empregado
AGRUPAR POR nroDepto
HAVINGCOUNT(nDIEmp)>3)N
[Link]=[Link];
49. Obter a lista de empregados chefes, que têm pelo menos um empregado a
seu cargo. Ordene o relatório inversamente pelo nome.
SELECIONE [Link], [Link] DE Empeado J, (SELECIONE [Link] DE Empeado E, empregador S
ONDE [Link] = [Link]
AGRUPAR POR [Link]
HAVINGCOUNT([Link])>=1)P
51. Entregar um relatório com o número de cargos em cada departamento e
qual é a média salarial de cada um. Indique o nome do
departamento no resultado.
INSERIR INTO Departamento(codDepto,nombreDpto,ciudad,diretor)
[{"id":"6000","categoria":"TRANSPORTE","local":"CALI","valor":null},{"id":"7000","categoria":"COMPRAS","local":"CALI","valor":null}]
51. Entregar um relatório com o número de cargos em cada departamento e
Qual é a média salarial de cada um. Indique o nome do
departamento no resultado.
[Link],nCar,proS
DEPARTAMENTO D,
(SELECIONE nroDepto, CONTAGEM(cargo) COMO
nCar,AVG(salEmp)ASproS
DEEmpregado
AGRUPAR POR nroDepto)E
ORDER BY nomeDpto;
52. Entregar o nome do departamento cuja soma de salários seja a mais alta
alta, indicando o valor da soma.
CRIAR VISÃO SumSalar AS (SELECIONAR nroDepto, SOMA(salEmp) AS sumS
DE Funcionário
AGRUPAR POR nroDepto);
53. Entregar um relatório com o código e nome de cada chefe, junto ao número
de empregados que dirige. Pode haver empregados que não tenham
supervisores, para isso será indicado apenas o número deles deixando os
valores restantes em NULL.
[Link],[Link],[Link]
DE Empregado D
(SELECIONA jefeDI, CONTAR(nDIEmp) COMO noSu
DE Empregado
ONDE jefeDI IS NOT NULL
AGRUPAR PORjefeDI)E
ONDE [Link] = [Link]
ORDENAR POR noSu DESC
;