Projeto: CSV, stored procedures e functions em PL/pgSQL

Mini-projeto de PL/pgSQL: importar uma base de desempenho de estudantes (CSV do Kaggle) para uma tabela com COPY e escrever stored procedures e functions que respondem perguntas sobre os dados.

1. Visão geral

Este é um mini-projeto que junta o que você estudou sobre PL/pgSQL: você vai carregar uma base de dados real, disponível em formato .csv, numa tabela do PostgreSQL e escrever stored procedures e functions que analisam esses dados.

O que você vai praticar

  • Criar uma tabela adequada a um conjunto de dados
  • Copiar os dados de um arquivo .csv para a tabela com COPY
  • Escrever stored procedures com parâmetros IN e OUT
  • Escrever functions que devolvem boolean e valores numéricos
  • Testar cada procedimento e cada função com um bloco anônimo

O que você vai precisar

  • PostgreSQL e pgAdmin 4 instalados
  • Saber escrever stored procedures e functions em PL/pgSQL
  • A base de dados do projeto (veja o próximo passo)

2. A base de dados

1.1 Estude e faça o download da base de dados disponível no link a seguir.

https://www.kaggle.com/datasets/csafrit2/higher-education-students-performance-evaluation

1.2 Crie uma tabela apropriada para o armazenamento dos itens. Não se preocupe com a normalização. Uma tabela basta.

1.3 Copie os dados do arquivo .csv para a sua tabela. Veja como na documentação do comando COPY:

https://www.postgresql.org/docs/current/sql-copy.html

3. Stored procedures

1.4 Escreva os seguintes stored procedures (incluindo um bloco anônimo de teste para cada um):

1.4.1 Exibe o número de estudantes maiores de idade.

1.4.2 Exibe o percentual de estudantes de cada sexo.

1.4.3 Recebe um sexo como parâmetro em modo IN e utiliza oito parâmetros em modo OUT para dizer qual o percentual de cada nota (variável grade) obtida por estudantes daquele sexo.

4. Functions

1.5 Escreva as seguintes functions (incluindo um bloco anônimo de teste para cada uma):

1.5.1 Responde (devolve boolean) se é verdade que todos os estudantes de renda acima de 410 são aprovados (grade > 0).

1.5.2 Responde (devolve boolean) se é verdade que, entre os estudantes que fazem anotações pelo menos algumas vezes durante as aulas, pelo menos 70% são aprovados (grade > 0).

1.5.3 Devolve o percentual de alunos que se preparam pelo menos um pouco para os "midterm exams" e que são aprovados (grade > 0).

5. Encerramento

Bom trabalho!

Ao terminar, você terá uma pequena camada de lógica armazenada no servidor, capaz de responder perguntas sobre os dados com uma simples chamada.

Bibliografia

Todos os codelabs