Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Porque que nessa primeira sintaxe o m.id é recebido da matrícula , já na segunda sintaxe o c.id não é s.id?

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 resposta
solução!

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?

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software