SóProvas


ID
2505604
Banca
CESPE / CEBRASPE
Órgão
TRE-BA
Ano
2017
Provas
Disciplina
Banco de Dados
Assuntos

O seguinte SCRIPT cria a tabela setor e insere dados em um sistema gerenciador de banco de dados Postgresql.


create table setor (

codigo integer,

codigo_pai integer,

sigla varchar(30),

constraint setor_pk primary key (codigo),

constraint setor_fk foreign key (codigo)

references setor);


insert into setor values (1, null,

'Presidencia');

insert into setor values (2, 1, 'ST');

insert into setor values (3, 1, 'SCI');

insert into setor values (4, 3, 'COGES');

insert into setor values (5, 3, 'COEPA');

insert into setor values (6, 2, 'SGA');

insert into setor values (7, 6, 'COGED');

insert into setor values (8, 6, 'COGELIC');


Considerando essas informações, assinale a opção que apresenta a expressão SQL que representa o nível hierárquico de cada setor.

Alternativas
Comentários
  • Questão pra tomar tempo de prova. Só resolver se sobrar tempo

  • Quem não tem acesso:  - -> D

  • Pedir comentário do professor

  • 1)primeira parte(caso base) -> with recursive org .... where codigo_pai is null => pega os setores que não são subordinados a ninguém, com esse conjunto inicial sendo chamado de org, inicializando o conjunto retornado pelo WITH

    2)segunda parte(iterações) -> union all .. junção de setor (com alias o1) com org(representa os setores encontrados nas iterações anteriores, com alias o2) na condição de junção código do pai do setor atualmente sendo analisado = código dos setores atualmente no conjunto...

    3)último SELECT => processa o conjunto retornado pelo with recursive

    Funcionamento do WITH RECURSIVE:

    Inicialização:

    Pega apenas o setor 1 que não tem nenhum pai

    {1}

    Iteração 2

    Pega setores 2 e 3, cujo pai é 1

    {1,2,3}

    Iteração 3

    Pega setores 4,5,6 cujos pais são 3 e 2

    {1,2,3,4,5,6}

    Iteração 4:

    Pega setores 7 e 8, cujo pai é 6

    (1,2,3,4,5,6,7,8}

    Iteração 5:

    Não tem ninguém mais para adicionar, chegamos a um closure!!!

    Resultado final: setores (1,2,3,4,5,6,7,8}

  • Pensei "putz... tem que ter um incremento em algum lugar, não?" nem acredito que deu certo kkkkkkk