Exercícios SQL
Exercício 1 Crie uma instrução que retorne media, numero de filhos e grau de instrução dos funcionários cujo salrio hora for maior que a media de todos os salarios, retorne somente os funcionarios da capital, casados e em ordem decrescente de idade.
select round(avg(idade)), numero_filhos, grau_instrucao
from rh."TB_FUNC"
where reg_procedencia='capital'
and estado_civil='casado'
and salario_hora > (select avg(salario_hora)from rh."TB_FUNC")
group by numero_filhos, grau_instrucao
order by round(avg(idade)) desc ;
Exercício 2 Retorne todos os funcionários com 2 filhos
select * from rh."TB_FUNC" where numero_filhos = '2' ;
ou
select * from rh."TB_FUNC" where cast (numero_filhos as integer) = 2;
Exercício 3
Acrescentando mais uma tabela Endereço
TABELA
CREATE TABLE cap16."TB_ENDERECO"
(
"id_end" integer NOT NULL,
"rua" character varying(30),
"numero" character varying(30),
"bairro" character varying(30),
"cep" character varying(10),
"estado" character varying(30),
"pais" character varying(30),
"id_func" integer,
PRIMARY KEY ("id_end")
)
TABLESPACE pg_default;
ALTER TABLE cap16."TB_ENDERECO"
OWNER to postgres;
INSERT INTO cap16."TB_ENDERECO"(
"id_end", "rua", "numero", "bairro", "cep", "estado", "pais", "id_func")
VALUES (1001, 'Jaguar', 40, 'Tijuca', '24239-900', 'Rio de Janeiro', 'Brasil', 2);
INSERT INTO cap16."TB_ENDERECO"(
"id_end", "rua", "numero", "bairro", "cep", "estado", "pais", "id_func")
VALUES (1002, 'Mercedes Benz', 140, 'Centro', '12098-900', 'Minas Gerais', 'Brasil', 6);
INSERT INTO cap16."TB_ENDERECO"(
"id_end", "rua", "numero", "bairro", "cep", "estado", "pais", "id_func")
VALUES (1003, 'BMW', 20, 'Tijuca', '23232-900', 'Rio de Janeiro', 'Brasil', 3);
INSERT INTO cap16."TB_ENDERECO"(
"id_end", "rua", "numero", "bairro", "cep", "estado", "pais", "id_func")
VALUES (1004, 'Ferrari', 32, 'Centro', '99872-900', 'Minas Gerais', 'Brasil', 11);
INSERT INTO cap16."TB_ENDERECO"(
"id_end", "rua", "numero", "bairro", "cep", "estado", "pais", "id_func")
VALUES (1005, 'McLaren', 45, 'Centro', '43982-900', 'Minas Gerais', 'Brasil', 17);
A) Retorne a media de salario hora por estado
select round(avg (f.salario_hora)), e.estado
from rh."TB_FUNC" f, rh."TB_ENDERECO" e
where f.id = e.id_func
group by e.estado
Comentários
Postar um comentário