0% found this document useful (0 votes)
53 views6 pages

Exercicios SQL

Download as txt, pdf, or txt
Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1/ 6

------------------------------------------

--DDL statement for table 'HR' database--


--------------------------------------------

-- Drop the tables in case they exist

DROP TABLE EMPLOYEES;


DROP TABLE JOB_HISTORY;
DROP TABLE JOBS;
DROP TABLE DEPARTMENTS;
DROP TABLE LOCATIONS;

-- Create the tables

CREATE TABLE EMPLOYEES (


EMP_ID CHAR(9) NOT NULL,
F_NAME VARCHAR(15) NOT NULL,
L_NAME VARCHAR(15) NOT NULL,
SSN CHAR(9),
B_DATE DATE,
SEX CHAR,
ADDRESS VARCHAR(30),
JOB_ID CHAR(9),
SALARY DECIMAL(10,2),
MANAGER_ID CHAR(9),
DEP_ID CHAR(9) NOT NULL,
PRIMARY KEY (EMP_ID),
FOREIGN KEY (JOB_ID) REFERENCES JOB_HISTORY(JOB_ID),
FOREIGN KEY (JOB_ID) REFERENCES Jobs(JOB_IDENT),
FOREIGN KEY (DEP_ID) REFERENCES Departments(DEPT_ID_DEP)
);

CREATE TABLE JOB_HISTORY (


EMPL_ID CHAR(9) NOT NULL,
START_DATE DATE,
JOBS_ID CHAR(9) NOT NULL,
DEPT_ID CHAR(9),
PRIMARY KEY (EMPL_ID,JOBS_ID),
FOREIGN KEY (JOBS_ID) REFERENCES JOBS(JOB_IDENT)
);

CREATE TABLE JOBS (


JOB_IDENT CHAR(9) NOT NULL,
JOB_TITLE VARCHAR(30) ,
MIN_SALARY DECIMAL(10,2),
MAX_SALARY DECIMAL(10,2),
PRIMARY KEY (JOB_IDENT)
);

CREATE TABLE DEPARTMENTS (


DEPT_ID_DEP CHAR(9) NOT NULL,
DEP_NAME VARCHAR(15) ,
MANAGER_ID CHAR(9),
LOC_ID CHAR(9),
PRIMARY KEY (DEPT_ID_DEP),
FOREIGN KEY (LOC_ID) REFERENCES LOCATIONS(LOCT_ID)
);
CREATE TABLE LOCATIONS (
LOCT_ID CHAR(9) NOT NULL,
DEP_ID_LOC CHAR(9) NOT NULL,
STATE_LOC VARCHAR(255) NOT NULL,
COUNTRY_LOC CHAR(20) NOT NULL,
PRIMARY KEY (LOCT_ID,DEP_ID_LOC)
);

-- INSERT the tables

INSERT INTO 'Employees'


(EMP_ID,F_NAME,L_NAME,SSN,B_DATE,SEX,ADDRESS,JOB_ID,SALARY,MANAGER_ID,DEP_ID)
VALUES
('E1001','John','Thomas','123456','01/09/1976','M','5631 Rice,
OakPark,IL','100','100000','30001','2'),
('E1002','Alice','James','123457','07/31/1972','F','980 Berry ln,
Elgin,IL','200','80000','30002','5'),
('E1003','Steve','Wells','123458','08/10/1980','M','291 Springs,
Gary,IL','300','50000','30002','5'),
('E1004','Santosh','Kumar','123459','07/20/1985','M','511 Aurora Av,
Aurora,IL','400','60000','30004','5'),
('E1005','Ahmed','Hussain','123410','01/04/1981','M','216 Oak Tree,
Geneva,IL','500','70000','30001','2'),
('E1006','Nancy','Allen','123411','02/06/1978','F','111 Green Pl,
Elgin,IL','600','90000','30001','2'),
('E1007','Mary','Thomas','123412','05/05/1975','F','100 Rose Pl,
Gary,IL','650','65000','30003','7'),
('E1008','Bharath','Gupta','123413','05/06/1985','M','145 Berry Ln,
Naperville,IL','660','65000','30003','7'),
('E1009','Andrea','Jones','123414','07/09/1990','F','120 Fall Creek,
Gary,IL','234','70000','30003','7'),
('E1010','Ann','Jacob','123415','03/30/1982','F','111 Britany
Springs,Elgin,IL','220','70000','30004','5'),
('E1011','Amanda','Gusmao','123456','01/09/1985','F','1157 Paulista, Tutoia,
SP','760','150000','30004','8'),
('E1012','Vanessa','Silva','123457','07/31/1982','F','1157 Paulista, Tutoia,
SP','720','90000','30004','8'),
('E1013','Khusia','Ibshia','123458','08/10/1980','M','122005 Bandhwari, Gwal
Pahari Village, ND','600','100000','30005','9'),
('E1014','Santosh','Zhash','123459','14/20/1988','M','122005 Bandhwari, Gwal
Pahari Village, ND','600','100000','30005','9'),
('E1015','Jorge','Paulo','123410','01/04/1981','M','1157 Paulista, Tutoia,
SP','500','70000','30001','8'),
('E1016','Clary','Allen','123411','02/08/1978','F','111 Green Pl,
Elgin,IL','600','90000','30001','2'),
('E1017','Amanda','Thomas','123412','05/05/1975','F','100 Rose Pl,
Gary,IL','650','65000','30003','7'),
('E1018','John ','Harry','123413','05/06/1985','M','145 Berry Ln,
Naperville,IL','660','65000','30003','7'),
('E1019','Andrea','Maria','123414','19/09/1990','F','120 Rua do Porto
Lisboa,PT','780','70000','30003','10'),
('E1020','Roberta','Lima','123415','21/30/1982','F','120 Rua do Porto
Lisboa,PT','780','70000','30004','10');

-- INSERT INTO 'Employees_2'


(EMP_ID,F_NAME,L_NAME,SSN,B_DATE,SEX,ADDRESS,JOB_ID,SALARY,MANAGER_ID,DEP_ID)
VALUES
-- ('E1001','John','Thomas','123456','01/09/1976','M','5631 Rice,
OakPark,IL','100','100000','30001','2'),
-- ('E1002','Alice','James','123457','07/31/1972','F','980 Berry ln,
Elgin,IL','200','80000','30002','5'),
-- ('E1003','Steve','Wells','123458','08/10/1980','M','291 Springs,
Gary,IL','300','50000','30002','5'),
-- ('E1004','Santosh','Kumar','123459','07/20/1985','M','511 Aurora Av,
Aurora,IL','400','60000','30004','5'),
-- ('E1005','Ahmed','Hussain','123410','01/04/1981','M','216 Oak Tree,
Geneva,IL','500','70000','30001','2'),
-- ('E1006','Nancy','Allen','123411','02/06/1978','F','111 Green Pl,
Elgin,IL','600','90000','30001','2'),
-- ('E1007','Mary','Thomas','123412','05/05/1975','F','100 Rose Pl,
Gary,IL','650','65000','30003','7'),
-- ('E1008','Bharath','Gupta','123413','05/06/1985','M','145 Berry Ln,
Naperville,IL','660','65000','30003','7'),
-- ('E1009','Andrea','Jones','123414','07/09/1990','F','120 Fall Creek,
Gary,IL','234','70000','30003','7'),
-- ('E1010','Ann','Jacob','123415','03/30/1982','F','111 Britany
Springs,Elgin,IL','220','70000','30004','5'),
-- ('E1011','Amanda','Gusmao','123456','01/09/1985','F','1157 Paulista, Tutoia,
SP','760','150000','30004','8'),
-- ('E1012','Vanessa','Silva','123457','07/31/1982','F','1157 Paulista, Tutoia,
SP','720','90000','30004','8'),
-- ('E1013','Khusia','Ibshia','123458','08/10/1980','M','122005 Bandhwari, Gwal
Pahari Village, ND','600','100000','30005','9'),
-- ('E1014','Santosh','Zhash','123459','14/20/1988','M','122005 Bandhwari, Gwal
Pahari Village, ND','600','100000','30005','9'),
-- ('E1015','Jorge','Paulo','123410','01/04/1981','M','1157 Paulista, Tutoia,
SP','500','70000','30001','8'),
-- ('E1016','Clary','Allen','123411','02/08/1978','F','111 Green Pl,
Elgin,IL','600','90000','30001','2'),
-- ('E1017','Amanda','Thomas','123412','05/05/1975','F','100 Rose Pl,
Gary,IL','650','65000','30003','7'),
-- ('E1018','John ','Harry','123413','05/06/1985','M','145 Berry Ln,
Naperville,IL','660','65000','30003','7'),
-- ('E1019','Andrea','Maria','123414','19/09/1990','F','120 Rua do Porto
Lisboa,PT','780','70000','30003','10'),
-- ('E1020','Roberta','Lima','123415','21/30/1982','F','120 Rua do Porto
Lisboa,PT','780','70000','30004','10'),
-- ('E1021','Mauricio','Helfstein','123414','19/09/1994','M','120 Rua do Brás,
SP','300','70000','30003','8'),
-- ('E1022','Lucas','Roberto','123415','21/30/1995','M','120 Rua da
Mooca,SP','400','70000','30004','8');

INSERT INTO 'Job_History' (EMPL_ID,START_DATE,JOBS_ID,DEPT_ID) VALUES


('E1001','08/01/2000','100','2'),
('E1002','08/01/2001','200','5'),
('E1003','08/16/2001','300','5'),
('E1004','08/16/2000','400','5'),
('E1005','05/30/2000','500','2'),
('E1006','08/16/2001','600','2'),
('E1007','05/30/2002','650','7'),
('E1008','05/06/2010','660','7'),
('E1009','08/16/2016','234','7'),
('E1010','08/16/2016','220','5'),

('E1011','08/01/2000','760','8'),
('E1012','08/01/2001','720','8'),
('E1013','08/16/2001','720','9'),
('E1014','08/16/2000','720','9'),
('E1015','05/30/2000','500','8'),
('E1016','08/16/2001','600','2'),
('E1017','05/30/2002','650','7'),
('E1018','05/06/2010','700','7'),
('E1019','08/16/2016','780','10'),
('E1020','08/16/2016','780','8');

INSERT INTO 'Jobs' (JOB_IDENT,JOB_TITLE,MIN_SALARY,MAX_SALARY) VALUES


('100','Sr. Architect','60000','100000'),
('200','Sr.Software Developer','60000','80000'),
('300','Jr.Software Developer','40000','60000'),
('400','Jr.Software Developer','40000','60000'),
('500','Jr. Architect','50000','70000'),
('600','Lead Architect','70000','100000'),
('650','Jr. Designer','60000','70000'),
('660','Jr. Designer','60000','70000'),
('234','Sr. Designer','70000','90000'),
('220','Sr. Designer','70000','90000'),
('700','Scrum Master','60000','70000'),
('720','PMO','90000','150000'),
('760','PE','100000','200000'),
('780','UX Designer','70000','90000');

INSERT INTO 'Departments' (DEPT_ID_DEP,DEP_NAME,MANAGER_ID,LOC_ID) VALUES


('2','Architect Group','30001','L0001'),
('5','Software Group','30002','L0002'),
('7','Design Team','30003','L0003'),
('8','Software Group','30004','L0004'),
('9','Architect Group','30005','L0005'),
('10','Design Team','30006','L0006');

INSERT INTO 'Locations' (LOCT_ID,DEP_ID_LOC, STATE_LOC, COUNTRY_LOC) VALUES


('L0001','2', 'Illinois', 'UNITED ESTATES'),
('L0002','5', 'Illinois', 'UNITED ESTATES'),
('L0003','7', 'Illinois', 'UNITED ESTATES'),
('L0004','8', 'SAO PAULO', 'BRAZIL'),
('L0005','9', 'NEW DELHI', 'INDIA'),
('L0006','10', 'LISBOA', 'PORTUGAL');

CREATE TEMPORARY TABLE 'Tabelao' AS


SELECT *
FROM EMPLOYEES as e
INNER JOIN DEPARTMENTS as d ON e.dep_id = d.DEPT_ID_DEP
INNER JOIN LOCATIONS as l ON d.LOC_ID = l.LOCT_ID
INNER JOIN JOB_HISTORY as j ON e.EMP_ID = j.EMPL_ID
INNER JOIN JOBS as f ON j.JOBS_ID = f.JOB_IDENT;
-- EXE:
Meu nome é Maurício sou P.O (Product Owner) de vocês. Teremos várias questões que
representam os problemas de negócios para resolverem.
Para cada resolução seria interessante justificar o seu desenvolvimento, assim
busquem explicar o que fizeram, o porque de cada desenvolvimento
para a equipe de assessores compreenderem seu raciocínio. Então, cada entrega terá
duas respostas a primeira o código(script)
e a segunda um pequeno trecho justificando sua resposta. Quando tiverem dúvidas no
desenvolvimento podem acionar o P.O
para compreenderem as regras de negócio.

1. A nossa empresa é global possui diversos colaboradores e grupos de trabalho ao


redor do mundo.
Recebemos uma solicitação da equipe de RH para a campanha "mulheres na tecnologia",
na qual precisamos informar
a quantidade de funcionários do sexo Feminino dos grupos de trabalho Software Group
e Architect Group que temos atualmente na empresa.

SELECT sex AS 'Sexo',


COUNT(sex) AS 'Qtd_Colaboradoras',
dep_name AS 'Nome_Departamento'
FROM EMPLOYEES
INNER JOIN DEPARTMENTS ON EMPLOYEES.DEP_ID = DEPARTMENTS.DEPT_ID_DEP
WHERE sex = 'F'
AND (dep_name = 'Architect Group'
OR dep_name = 'Software Group')
GROUP BY sex, dep_name;

2. Anualmente, o RH realiza campanha ligadas a qualidade de vida dos trabalhadores,


no mês de novembro é realizado novembro azul ligados
a prevenção do cancêr de prostáta. Dessa forma, precisamos selecionar a lista de
funcionários masculinos com idade acima dos 40 anos de idade
para o RH enviar um webmail de convite para a campanha.

Select *
FROM EMPLOYEES
WHERE CAST(strftime('%Y', current_date) AS INTEGER) - CAST(substr(b_date,7,4) AS
INTEGER) >= 40
and sex = 'M';

3. A empresa está com um novo plano de bonificação de resultado para os


funcionários, a nova política PLR(Participação de resultados) nos diz
que quando o funcionário tanto masculino quanto feminino tiver 10 ou mais anos de
casa ele receberá com base no salário
um percentual de 25 % de bonificação (1.25). Assim, construa uma nova coluna com a
bonificacao das pessoas selecionadas na regra,
as que estiverem fora mantém o mesmo salário.

SELECT *,
case
WHEN CAST(strftime('%Y', current_date) AS INTEGER) -
CAST(substr(start_date,7,4) AS INTEGER) >= 10
THEN salary * 1.25
ELSE salary
END AS PLR
FROM EMPLOYEES
INNER JOIN JOB_HISTORY ON EMPLOYEES.emp_id = JOB_HISTORY.EMPL_ID;

6. O RH solicitou para a equipe de desenvolvimento que o Tabelao de registro dos


funcionários precisava de um acréscimo de duas colunas, a primeira
coluna com o ano no qual o funcionário ingressou na empresa, a segunda do ano de
nascimento do funcionário.

SELECT *,
substr(b_date,7,4) AS ANO_NASCIMENTO,
substr(start_date,7,4) AS ANO_INICIO_TRABALHO
FROM 'Tabelao';

7. Um desenvolvedor da equipe de FRONT_END da empresa precisa consumir uma coluna


que possua o primeiro e o segundo nome dos funcionários da empresa
para o sistema de RH. Assim, construa uma coluna com a concatenação dos nomes e um
espaçamento entre eles.

SELECT *,
f_name || " " || l_name AS NOME_CONCAT
FROM EMPLOYEES;

8. A Contabilidade da empresa precisa da média dos salários dos funcionários. Dessa


forma, construa uma coluna que tenha a média por grupo de trabalho.

SELECT * FROM 'Tabelao';


SELECT * FROM DEPARTMENTS;

SELECT dep_name AS NOME_DEPARTAMENTO,


dept_id_dep CODIGO_DEPARTAMENTO,
AVG(salary) AS MEDIA_SALARIO_DEP
FROM 'Tabelao'
GROUP BY dept_id_dep;

9. A empresa está realizando um grande mapeamento de funcionários, dessa forma, a


gerência quer ter ciência de quantos funcionários por país temos
atualmente.

SELECT * FROM 'Tabelao';

SELECT country_loc AS NOME_PAIS,


COUNT(*) AS NUMERO_COLABORADORES
FROM 'Tabelao'
GROUP BY country_loc;

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy