Contagem de número de alunos matriculados em query SQL

Pessoal,

A query abaixo extrai, para um relatório iReport, informações sobre os alunos matriculados em cursos de pós-graduação de uma instituição de ensino superior.

select pg.prg_cod_programa, pg.prg_descricao, m.mat_alu_matricula, p.pes_nome, m.mat_tur_ano, m.mat_tur_periodo,
decode(nt.nvt_niv_tipo,1,'Mestrado Acadêmico', 2,'Mestrado Profissionalizante', 3,'Doutorado') as descricao_nivel,
decode (m.mat_tipo_matricula, 1, 'Matrícula Normal', 2,'Matrícula Pendente', 3,'Matrícula Extra-Curricular',4 ,'Matrícula Aproveit.') as tipo_matricula, m.mat_tur_dis_disciplina,
d.dis_descricao, m.mat_tur_turma, t.tur_bibliografia, count(m.mat_alu_matricula) as total_alunos
from   prpg.matriculas m, prpg.alunos a, prpg.turmas t, prpg.programas pg, prpg.pessoas p, prpg.disciplinas d, prpg.niveis_turmas nt
where a.alu_ecu_niv_prg_cod_programa = &programa
and   a.alu_ecu_niv_tipo = &nivel
and   m.mat_tur_ano = &ano
and   m.mat_tur_periodo = &periodo
and   m.mat_alu_matricula = a.alu_matricula
and   m.mat_tur_ano = t.tur_ano
and   m.mat_tur_periodo = t.tur_periodo
and   m.mat_tur_dis_disciplina = t.tur_dis_disciplina
and   m.mat_tur_turma = t.tur_turma
and   nt.nvt_niv_tipo = a.alu_ecu_niv_tipo
and   nt.nvt_tur_ano = t.tur_ano
and   nt.nvt_tur_periodo = t.tur_periodo
and   nt.nvt_tur_dis_disciplina = t.tur_dis_disciplina
and   nt.nvt_tur_turma = t.tur_turma
and   a.alu_ecu_niv_prg_cod_programa = pg.prg_cod_programa
and   a.alu_pes_cod_pessoa = p.pes_cod_pessoa
and   a.alu_situacao = 'A'
and   m.mat_tur_dis_disciplina = d.dis_disciplina
group by pg.prg_cod_programa, pg.prg_descricao, m.mat_alu_matricula, p.pes_nome, m.mat_tur_ano, m.mat_tur_periodo,nt.nvt_niv_tipo, m.mat_tipo_matricula,
m.mat_tur_dis_disciplina, d.dis_descricao, m.mat_tur_turma, t.tur_bibliografia
order by p.pes_nome

Estou tentando utilizar a função de agregação do SQL

count(m.mat_alu_matricula) as total_alunos

para obter o total de alunos matriculados e exibir isto no relatório, só que não estou obtendo o resultado esperado.
A função acima está exibindo “1” ao lado da matrícula de cada aluno, mas eu necessito é só do total de alunos.

Alguém poderia me ajudar a resolver isto ?
Agradece,

Max Carvalho

Max, isso esta acontecendo pois a query esta agrupando cada aluno, e contando ele mesmo.
Se quer saber a quantidade de alunos, acho que isso resolve, testa ai e avisa!

select count(m.mat_alu_matricula) as total_alunos
  from prpg.matriculas    m,
       prpg.alunos        a,
       prpg.turmas        t,
       prpg.programas     pg,
       prpg.pessoas       p,
       prpg.disciplinas   d,
       prpg.niveis_turmas nt
 where a.alu_ecu_niv_prg_cod_programa = &programa
   and a.alu_ecu_niv_tipo = &nivel
   and m.mat_tur_ano = &ano
   and m.mat_tur_periodo = &periodo
   and m.mat_alu_matricula = a.alu_matricula
   and m.mat_tur_ano = t.tur_ano
   and m.mat_tur_periodo = t.tur_periodo
   and m.mat_tur_dis_disciplina = t.tur_dis_disciplina
   and m.mat_tur_turma = t.tur_turma
   and nt.nvt_niv_tipo = a.alu_ecu_niv_tipo
   and nt.nvt_tur_ano = t.tur_ano
   and nt.nvt_tur_periodo = t.tur_periodo
   and nt.nvt_tur_dis_disciplina = t.tur_dis_disciplina
   and nt.nvt_tur_turma = t.tur_turma
   and a.alu_ecu_niv_prg_cod_programa = pg.prg_cod_programa
   and a.alu_pes_cod_pessoa = p.pes_cod_pessoa
   and a.alu_situacao = 'A'
   and m.mat_tur_dis_disciplina = d.dis_disciplina
 group by pg.prg_cod_programa,
          pg.prg_descricao,
          m.mat_alu_matricula,
          p.pes_nome,
          m.mat_tur_ano,
          m.mat_tur_periodo,
          nt.nvt_niv_tipo,
          m.mat_tipo_matricula,
          m.mat_tur_dis_disciplina,
          d.dis_descricao,
          m.mat_tur_turma,
          t.tur_bibliografia
 order by p.pes_nome

dh-00,

Ainda não deu certo pq, na realidade, eu quero todas as informações que no select da query original que enviei e, por último, quero obter o total de alunos matriculados.
A execução da query acima só extrai as 68 linhas, sendo contador de “1” para cada aluno.
Só para reforçar, o que eu necessito é buscar todas as informações contidas na query original e, por último, contabilizar o total de alunos matriculados(atributo m.mat_alu_matricula).
Em resumo, a última informação a constar nos select original seria um contador para o campo “m.mat_alu_matricula” mas sem agrupar.
Espero ter sido mais claro agora.
Agradece,

Max Carvalho

Nos parâmetros de retorno, faz um select entre parênteses a parte com o count que resolve. (select … ) as algumNome