Bom dia,
Estou tentando criar uma query que me traga, dentre outras coisas, o número de alunos matriculados em uma disciplina, ano e período, de um dado programa de pós-graduação.
A minha dificuldade está em usar função de grupo(count) dentro de queries mais elaboradas, como a que segue abaixo :
select distinct u.nome as Programa, cc.codigo as Disciplina, ccd.nome as Descrição, cr_aula+cr_laboratorio as Créditos, p.nome as Docente,
CASE hd.dia WHEN '2' THEN 'Segunda' WHEN '3' THEN 'Terça' WHEN '4' THEN 'Quarta' WHEN '5' THEN 'Quinta' WHEN '6' THEN 'Sexta' END as Dia, h.inicio as Hora_Início, h.fim as Hora_Fim, count(id_discente)
from ensino.componente_curricular cc, ensino.componente_curricular_detalhes ccd, comum.unidade u, ensino.turma t, ensino.docente_turma dt, ensino.horario_docente hd, ensino.horario h,
ensino.matricula_componente mc, comum.pessoa p
where cc.nivel = 'S'
and cc.id_detalhe = ccd.id_componente_detalhes
and cc.id_unidade = u.id_unidade
and cc.id_tipo_componente = 2
and mc.ano = 2012
and mc.periodo = 2
and mc.id_componente_curricular = cc.id_disciplina
and mc.id_turma = dt.id_turma
and dt.id_turma = t.id_turma
and dt.id_docente = p.id_pessoa
and dt.id_docente_turma = hd.id_docente_turma
and hd.id_horario = h.id_horario
and cc.id_unidade in (1868,1870,1872,1874,1885,1919)
group by u.nome, cc.codigo, ccd.nome, ccd.cr_aula, cr_laboratorio, p.nome, hd.dia, h.inicio, h.fim
order by u.nome, ccd.nome
Explicando melhor:
Tabela ensino.matricula_componente - contém as informações de todas as disciplinas, ano, período e o identificador do discente (id_discente)
Tabela ensino.componente_curricular - contém as informações de todos os componentes curriculares (disciplinas -> id_tipo_componente = 2)
Quando executo a query acima, obtenho o seguinte
...
'programa' 'disciplina' 'descrição' 'créditos' 'docente' 'dia' 'hora_inÃcio' 'hora_fim' 'count'
'PROGRAMA DE PÃ?S-GRAD. EM ARQUITETURA E URBANISMO' '1704031' 'ACESSO AO SOLO URBANO E SEGREGACAO' '4' 'MARIA REGINA BARACUHY LEITE' 'Segunda' '08:00:00' '09:00:00' '5'
'PROGRAMA DE PÃ?S-GRAD. EM ARQUITETURA E URBANISMO' '1704031' 'ACESSO AO SOLO URBANO E SEGREGACAO' '4' 'MARIA REGINA BARACUHY LEITE' 'Segunda' '09:00:00' '10:00:00' '5'
'PROGRAMA DE PÃ?S-GRAD. EM ARQUITETURA E URBANISMO' '1704031' 'ACESSO AO SOLO URBANO E SEGREGACAO' '4' 'MARIA REGINA BARACUHY LEITE' 'Segunda' '10:00:00' '11:00:00' '5'
'PROGRAMA DE PÃ?S-GRAD. EM ARQUITETURA E URBANISMO' '1704031' 'ACESSO AO SOLO URBANO E SEGREGACAO' '4' 'MARIA REGINA BARACUHY LEITE' 'Segunda' '11:00:00' '12:00:00 '5'
...
Na tabela resultado acima, a última coluna é o resultado do ‘count’.
Ocorre, porém, que o mesmo está se repetindo para cada tupla, possivelmente em virtude da colunas Dia, Hora Início e Hora Fim, que geram tal repetição.
Também não sei se o modo de utilização da função de agregação COUNT, está correta no caso acima.
Alguém poderia me ajudar ?
Grato pela atenção,
Max Carvalho