1 ) select c.nome, count(m.id) from curso c -> join matricula m on m.id = m.curso_id -> group by c.nome;
2) > select c.nome, count(s.id) from -> curso c join secao s on c.id = s.curso_id -> group by c.id -> having count(s.id) > 3;
1 ) select c.nome, count(m.id) from curso c -> join matricula m on m.id = m.curso_id -> group by c.nome;
2) > select c.nome, count(s.id) from -> curso c join secao s on c.id = s.curso_id -> group by c.id -> having count(s.id) > 3;
Oi Jorge, tudo bem?
No primeiro caso, estamos contando as matrículas dos alunos considerando todos os cursos que eles fizeram.
No segundo caso, estamos contando do total de cursos que o aluno fez e está fazendo em que o aluno por mais de 3 sessões do curso.
O critério da primeira query é contar as matriculas. Independente dos cursos terem sido finalizados ou não. No segundo caso, podemos ignorar a matrícula por que a contagem é das sessões feitas.
Aqui podemos ter uma casca de banana: um aluno pode fazer várias sessões sem se matricular? Se sim, a contagem pode fazer diferença usando o m.id
. Caso contrário, a contagem não será impactada pela relação com a matrícula, ou seja, podemos ignorá-la. :D
Faz sentido?