Projeto -Resilia - Módulo 3

Banco de Dados - Resilidata -

  • Meu deus, eu não entendo nada de banco de dados, o que é isso que vocês fizeram ?

    Calma lá que eu vou te explicar, nossa equipe fez a coleta de dados de vários setores diferentes da Resilia ( alunos, facilitadores, cursos, etc... ) e colocamos tudo isso muito bonitinho dentro de tabelas, para facilitar a procura e gestão de dados dentro da empresa, agilizando assim processos que antes demandariam horas. Veja também a nossa apresentação em slides!

  • Tudo bem, já entendi, mas quem faz parte da sua equipe ?

    Bem, a nossa equipe é composta por:

    Somos todos estudantes da Resilia Educação, cursando Análise de Dados, possivelmente um dia seremos analistas de dados.

  • Ok, vocês provavelmente fizeram um belo trabalho em equipe, dá pra mostrar como ficou o banco de dados ?

    Sim, vamos mostrar pra você, uma forma bem fácil de se visualizar dados, é com diagramas! Saca só o nosso:

    Esse aqui é nosso diagrama conceitual: img

    E esse aqui é nosso diagrama lógico: img

    Neles você consegue verificar todas as chaves primárias e estrangeiras, e como elas se relacionam dentro do banco de dados.

  • Nossa, ficou espetacular, aposto que vocês vão tirar a avaliação máxima nisso aí, e como vocês fazem as consultas nisso ?

    Então, todo o banco foi implementado dentro de um programinha chamado PostgreSQL, é um programa que lê, executa e armazena scripts SQL, que nada mais são que linhas de código que fazem a inserção de informação dentro de uma base de dados.

    Por meio desses scripts, é possível tanto inserir novas informações, visualizar o que contém o nosso banco e fazer pesquisas absolutamente personalizáveis, a fim de trazer respostas claras e precisas.

    Alguns exemplos de perguntas feitas ao banco e seus scripts:

    Selecionar a quantidade total de estudantes cadastrados no banco;

     select count(id_aluno) as "Número de alunos" from aluno;
    

    Selecionar todos os estudantes e seus respectivos cursos;

     select aluno.nome as "Aluno", curso.nome as "Curso"
     from aluno
     inner join matricula on matricula.id_aluno = aluno.id_aluno
     inner join curso on curso.id_curso = matricula.id_curso;
    

    Quantos alunos cadastrados por curso ?;

     select c.nome, c.id_curso , count(m.id_aluno) as "Numero de alunos por curso"  from curso c 
     inner join matricula as m  on m.id_curso  = c.id_curso 
     inner join aluno as a  on a.id_aluno = m.id_aluno
     group by c.id_curso 
     order by c.id_curso;
    

    Qual curso tem mais alunos cadastrados ?;

      select c.id_curso, c.nome, count(a.id_aluno) 
      from curso as c 
      inner join matricula as m on m.id_curso = c.id_curso 
      inner join aluno as a on a.id_aluno = m.id_aluno 
      group by c.id_curso
      having count(a.id_aluno) = (
         select max(numero.n_alunos) from(
           select count(a.id_aluno) as "n_alunos"
           from curso c 
           inner join matricula m on m.id_curso = c.id_curso 
           inner join aluno a on a.id_aluno = m.id_aluno 
           group by c.id_curso 
         ) as numero
       ); 
    

    Selecionar quais pessoas facilitadoras atuam em mais de uma turma;

     select count(tf.id_modulo), fa.nome  from modulo tf
    

INNER JOIN facilitador fa ON tf.facilitador_soft = fa.id_facilitador GROUP BY fa.id_facilitador HAVING count(tf.facilitador_soft)>1 union select count(tf.id_modulo) , fa.nome from modulo tf INNER JOIN facilitador fa ON tf.facilitador_tech = fa.id_facilitador GROUP BY fa.id_facilitador HAVING count(tf.facilitador_tech)>1 ;


 **Qual a quantidade de pessoas do gênero feminino que fizeram /fazem o curso de WebDev por turma ?;**
select web.nome,web.id_curso as numero_turma, count(web.id_aluno) as qtd_meninas
 from (
	select matricula.id_aluno, curso.id_curso, curso.nome
		from matricula 
		inner join curso
			on matricula.id_curso = curso.id_curso
		where curso.nome = 'WebDev Full Stack') as web
 inner join aluno
	on web.id_aluno = aluno.id_aluno
 where web.id_aluno = aluno.id_aluno and aluno.genero = 'Feminino'
 group by web.id_curso, web.nome
```

**Qual a quantidade de alunos que já finalizaram o curso de WebDev e Análise de Dados e que já estão trabalhando na área tech ?;**
 select count(matricula.id_matricula), curso.nome 
  from matricula
  inner join curso on curso.id_curso = matricula.id_curso
  inner join aluno on aluno.id_aluno = matricula.id_aluno
  where matricula.status='Concluído'
  and status_empregabilidade='Empregado - Tech'  
  group by curso.nome;
 

Retorne quais são os estudantes de WebDev que se aplicam ao critério anterior:;

 select matricula.id_matricula, aluno.nome
  from matricula 
  inner join aluno on aluno.id_aluno = matricula.id_aluno
  inner join curso on curso.id_curso = matricula.id_curso
  where matricula.status='Concluído'
  and status_empregabilidade='Empregado - Tech'
  and curso.nome='WebDev Full Stack';

Retorne quais são os estudantes de Análise de Dados que se aplicam ao critério anterior;

 select matricula.id_matricula, aluno.nome
  from matricula 
  inner join aluno on aluno.id_aluno = matricula.id_aluno
  inner join curso on curso.id_curso = matricula.id_curso
  where matricula.status='Concluído'
  and status_empregabilidade='Empregado - Tech'
  and curso.nome='Data Analytics';

Quantos alunos avaliados como "colocou tudo em prática" ou "provou seu diferencial" no projeto final do módulo 1 da(s) turma(s) atual(ais) de Data Analytics?;

 select ntb.nota, ntb.qtd_notas
 from(
     select pf.nota_tech as nota, count(pf.nota_tech) as qtd_notas
         from projeto_final as pf
         inner join modulo as md
             on pf.id_modulo = md.id_modulo 
         inner join curso as cu
             on md.id_curso = cu.id_curso
         where cu.nome = 'Data Analytics' 
             and md.nivel  = '1º' 
             and cu.data_inicio < current_timestamp
             and cu.data_enceramento > current_timestamp
         group by nota) as ntb
 where nota = 4 or nota = 5 

Existe diferença na quantidade de alunos inscritos se a turma for vespertina ou noturna ?;

 select count(mt.id_matricula) as inscritos, cu.turno as turno
 from matricula as mt
 left join curso as cu
     on mt.id_curso = cu.id_curso
 group by turno
  • E como eu faço para testar o repositório de vocês aqui no meu PC?!

    É só seguir os seguintes passos, olha só como é fácil:

    1º - Clonando o repositório para a sua máquina:

    2º - Instalar o PostgreSQL;

    3º - Instalar o DBeaver;

    4º - Após instalado, clique em criar nova conexão(vide imagem abaixo):

    img

    5º - Em seguida, siga o caminho abaixo para restaurar o script na tabela:

    img

    6º - Clique no símbolo da pasta indicado, selecione o arquivo .sql baixado e clique em start:

    img

    7º - Agora é só realizar as consultas, abrindo um novo script e digitando as linhas passadas mais acima !

    img