Obs.: Olha criamos essa sentença para mostrar os alunos em ordem de maior média de notas ou seja, notas/quantidade de disciplinas envolvendo o módulo CorporeRMBis que cria Cubos para ser visto pelo CorporeRM Classis que é o modulo acadêmico, mas no entanto a consulta ao gerá-la no Bis o contador busca globalmente e seleciona todos os cursos gerando a numeração correta, mas ao filtrar por período menor o contador aumenta o valor ex.:
Ao abrir o cubo global o aluno x: colocação 1
Ao abrir o cubo por período o aluno x: colocação 100
SELECT
UMATALUN.CODCUR AS CODIGO_CURSO,
UCURSOS.NOME AS NOME_CURSO,
UMATRICPL.PERLETIVO AS PERIODO_LETIVO,
ROW_NUMBER() OVER (ORDER BY
(SELECT
SUM (MM.A0)/COUNT(MM.CODMAT)
FROM UMATALUN MM, UMATRICPL PL
WHERE MM.MATALUNO = UMATALUN.MATALUNO
AND PL.CODCUR=UMATALUN.CODCUR
AND PL.PERLETIVO=PL.PERLETIVO
AND PL.PERIODO=PL.PERIODO
AND MM.MATALUNO = PL.MATALUNO
AND MM.STATUS NOT IN ('RN','RF','MA','AD','DP')
)DESC )
AS CLASSIFICAÇÃO,
CONVERT(DECIMAL (10,2),
(SELECT
SUM (MM.A0)/COUNT(MM.CODMAT)
FROM UMATALUN MM, UMATRICPL PL
WHERE MM.MATALUNO = UMATALUN.MATALUNO
AND PL.CODCUR=PL.CODCUR
AND PL.PERLETIVO=PL.PERLETIVO
AND PL.PERIODO=PL.PERIODO
AND MM.MATALUNO = PL.MATALUNO
AND MM.STATUS NOT IN ('RN','RF','MA','AD','DP')
)
)AS MEDIA_DISCIPLINAS_APROVADAS,
CONVERT(DECIMAL (10,2),
(SELECT
SUM (UMATALUN.A0)/COUNT(UMATALUN.CODMAT) )
)AS MEDIA_DISCIPLINAS_CURSADAS,
(SELECT EALUNOS.NOME) AS NOME_ALUNO,
UALUCURSO.DATAINGRESSO AS DATA_INGRESSO,
MAX(UMATRICPL.PERIODO) AS PERÍODO,
(
SELECT
SUM (LUN.A0)
FROM
UMATALUN LUN, UMATRICPL CP
WHERE
CP.CODCUR=UMATALUN.CODCUR
AND CP.PERLETIVO=UMATRICPL.PERLETIVO
AND CP.MATALUNO = UMATALUN.MATALUNO
AND CP.MATALUNO = LUN.MATALUNO
AND LUN.STATUS NOT IN ('RN','RF','MA','AD','DP')
)AS TOTAL_NOTAS_APROVADAS,
(SELECT SUM (UMATALUN.A0))AS TOTAL_NOTAS_CURSADAS,
(SELECT
COUNT (MM.CODMAT)
FROM UMATALUN MM
WHERE MM.MATALUNO = UMATALUN.MATALUNO
AND MM.STATUS NOT IN ('RN','RF','MA','AD','DP')
)AS TOTAL_DISC_APROVADAS,
(SELECT COUNT (UMATALUN.CODMAT))AS TOTAL_DISC_CURSADAS,
(
(CASE
WHEN
(SELECT COUNT (A.STATUS)
FROM UMATALUN A
WHERE A.STATUS='rn'
AND A.MATALUNO=UMATALUN.MATALUNO
GROUP BY A.STATUS) IS NULL
THEN 0
ELSE
(SELECT COUNT (A.STATUS)
FROM UMATALUN A
WHERE A.STATUS='rn'
AND A.MATALUNO=UMATALUN.MATALUNO
GROUP BY A.STATUS)
END)
+
(CASE
WHEN
(SELECT COUNT (A.STATUS)
FROM UMATALUN A
WHERE A.STATUS='rf'
AND A.MATALUNO=UMATALUN.MATALUNO
GROUP BY A.STATUS) IS NULL
THEN 0
ELSE
(SELECT COUNT (A.STATUS)
FROM UMATALUN A
WHERE A.STATUS='rf'
AND A.MATALUNO=UMATALUN.MATALUNO
GROUP BY A.STATUS)
END)
)AS TOTAL_REPROVACAO,
(
(SELECT COUNT (FF.CODMAT)
FROM UGRADE FF
WHERE FF.GRADE=:MATRIZ_S
AND FF.CODCUR=:COD_CURSO_S) -
(SELECT COUNT (MM.CODMAT)
FROM UMATALUN MM
WHERE MM.MATALUNO =UMATALUN.MATALUNO
AND MM.STATUS NOT IN ('RN','RF','MA','AD','DP'))
) AS TOTAL_DISC_PARA_CONCLUSÃO_CURSO
,
1 AS QTD
FROM
UMATRICPL,
UMATALUN,
EALUNOS,
UALUCURSO,
UCURSOS
WHERE
UMATRICPL.MATALUNO=UMATALUN.MATALUNO
AND UMATRICPL.MATALUNO=EALUNOS.MATRICULA
AND UMATRICPL.MATALUNO=UALUCURSO.MATALUNO
AND UMATALUN.MATALUNO=UALUCURSO.MATALUNO
AND UALUCURSO.STATUS NOT IN ('TE','MC','IN','TI','DS','OB','MT','TG')
AND UCURSOS.CODCUR=UMATALUN.CODCURMAT
AND UCURSOS.CODCUR=UALUCURSO.CODCUR
GROUP BY
UMATRICPL.PERLETIVO,
EALUNOS.NOME,
EALUNOS.MATRICULA,
UMATALUN.MATALUNO,
UALUCURSO.MATALUNO,
UALUCURSO.DATAINGRESSO,
UCURSOS.NOME,
UMATRICPL.PERLETIVO,
UMATRICPL.PERIODO,
UCURSOS.CODCUR,
UALUCURSO.CODCUR,
UALUCURSO.STATUS,
UCURSOS.NOME,
UMATALUN.CODCUR