select distinct c.id, c.numero as "N°", c.ano as "Ano", c.data_inicio as "Data de Início", c.data_fim as "Data de Término" ,
u.nome as "Unidade de Lotação Subordinada", u.id_unidade as "ID Unidade de Lotação Subordinada", ug.nome as "Unidade Gestora", mc.id_mao_obra_contratada as "ID Mão de Obra Contratada"
from contratos.contrato c
join contratos.mao_obra_contratada mc on c.id=mc.id_contrato
left join contratos.mao_obra_unidade_beneficiada m using(id_mao_obra_contratada)
left join contratos.unidade_beneficiada ub on ub.id=m.id_unidade_beneficiada
left join comum.unidade u on ub.id_unidade = u.id_unidade
left join comum.unidade ug on c.id_unidade_gestora = ug.id_unidade
where (c.id_sub_tipo=3 or c.id_sub_tipo=5);
Para considerar apenas os contratos vigentes:
select distinct c.id, c.numero as "N°", c.ano as "Ano", c.data_inicio as "Data de Início", c.data_fim as "Data de Término" ,
u.nome as "Unidade de Lotação Subordinada", u.id_unidade as "ID Unidade de Lotação Subordinada", ug.nome as "Unidade Gestora", mc.id_mao_obra_contratada as "ID Mão de Obra Contratada"
from contratos.contrato c
join contratos.mao_obra_contratada mc on c.id=mc.id_contrato
left join contratos.mao_obra_unidade_beneficiada m using(id_mao_obra_contratada)
left join contratos.unidade_beneficiada ub on ub.id=m.id_unidade_beneficiada
left join comum.unidade u on ub.id_unidade = u.id_unidade
left join comum.unidade ug on c.id_unidade_gestora = ug.id_unidade
where (c.id_sub_tipo=3 or c.id_sub_tipo=5)
and c.data_fim>= now();
Para consultar os contratos com as quantidades de vagas:
select mb.id_mao_obra_contratada as "ID Mão de ObraContratada",
mb.quantidade as "Quant. Vagas Para Contrato",
u.id_unidade as "ID Unidade", u.nome as "Unidade de Lotação"
from contratos.mao_obra_unidade_beneficiada mb
inner join contratos.unidade_beneficiada ub on mb.id_unidade_beneficiada=ub.id
inner join comum.unidade u on ub.id_unidade=u.id_unidade
inner join contratos.mao_obra_contratada mc on mb.id_mao_obra_contratada=mc.id_mao_obra_contratada;
Para consultar a quantidade de vagas estipulada no contrato a partir da mão de obra e unidade selecionadas (Substitua os **?** respectivamente pelo ID da mão de obra contratada e ID da unidade de lotação subordinada na qual será feita o dimensionamento):
select mb.id_mao_obra_contratada as "ID Mão de ObraContratada",
mb.quantidade as "Quant. Vagas Para Contrato",
u.id_unidade as "ID Unidade", u.nome as "Unidade de Lotação"
from contratos.mao_obra_unidade_beneficiada mb
inner join contratos.unidade_beneficiada ub on mb.id_unidade_beneficiada=ub.id
inner join comum.unidade u on ub.id_unidade=u.id_unidade
inner join contratos.mao_obra_contratada mc on mb.id_mao_obra_contratada=mc.id_mao_obra_contratada
where mc.id_mao_obra_contratada=?
and u.id_unidade=?;
Consulta de servidores não ativos:
select * from rh.servidor where id_ativo != 1
Consulta de unidades sem servidores alocados:
select distinct u.* from comum.unidade u
except select distinct u.* from comum.unidade u join rh.servidor s on (s.id_unidade=u.id_unidade)
Consulta de unidades com servidores alocados:
select * from comum.unidade u join rh.servidor s on (s.id_unidade=u.id_unidade)