CREATE TABLE turmas (
id SERIAL PRIMARY KEY,
nome_turma VARCHAR(50),
serie VARCHAR(20) DEFAULT '3º Ano',
professor_id INT REFERENCES professores(id)
);
CREATE TABLE chamadas (
id BIGSERIAL PRIMARY KEY,
aluno_id INT NOT NULL REFERENCES alunos(id),
turma_id INT NOT NULL REFERENCES turmas(id),
presente BOOLEAN NOT NULL,
motivo_falta_id INT REFERENCES motivos_falta(id),
data_registro DATE NOT NULL
);
SELECT
t.nome_turma,
a.nome AS aluno,
COUNT(c.id) AS total_aulas,
ROUND(100.0 * SUM(CASE WHEN c.presente THEN 1 ELSE 0 END) / COUNT(c.id), 1) AS taxa_presenca_pct,
mf.descricao AS justificativa
FROM chamadas c
JOIN alunos a ON c.aluno_id = a.id
JOIN turmas t ON c.turma_id = t.id
LEFT JOIN motivos_falta mf ON c.motivo_falta_id = mf.id
WHERE t.serie = '3º Ano'
GROUP BY t.nome_turma, a.nome, mf.descricao
ORDER BY taxa_presenca_pct ASC;
3ºB | Lucas Santos | 40 aulas | 82.5% pres. | Atestado Médico
3ºB | Ana Costa | 40 aulas | 75.0% pres. | Ausência Não Justificada
Edu-Call: Sistema de Controle de Chamada Escolar
O Edu-Call é um projeto modelado do zero com banco de dados relacional em PostgreSQL para professores registrarem a frequência escolar por turma, com suporte a motivos detalhados de falta para identificação de evasão.
- Definição completa de tabelas, chaves primárias/estrangeiras e integridade referencial entre professores, turmas e chamadas.
- Estruturação das contas por professor e parametrização das turmas do 3º ano.
- Escrita de consultas SQL analíticas com múltiplos JOINs, GROUP BY e cálculos de taxa de presença.