Sql arredondamento?

24/09/2020

0

Pessoal como poço fazer esse arredondamento no firebird 3.0

preciso que o select fique assim: Se a media_bimestral for 2,1 ou 2,2 arredonda para 2,0 ** se a nota for 2,3 ou 2,4 ou 2,5 ou 2,6 ou 2,7 arredonda para 2,5 ** se a nota for 2,8 ou 2,9 arredonda para 3,0
BEGIN
FOR
select n1.matricula_aluno_notas,
n1.codigo_turma_notas,
al.numero,
n1.bimestre,

SUM(N1.TRAB_INDIV_NOTA_1) AS TRABiNDVIDUAL1,
SUM(N1.TRAB_INDIV_NOTA_2) AS TRABiNDVIDUAL2,
SUM(N1.TRAB_INDIV_NOTA_3) AS TRABiNDVIDUAL3,
SUM(N1.PROVA_NOTA_1) AS PROVA1,
SUM(N1.PROVA_NOTA_2) AS PROVA2,
SUM(N1.PROVA_NOTA_3) AS PROVA3,
SUM(N1.OBSERVACAO_NOTA_1) AS OBSERVACAO1,
SUM(N1.OBSERVACAO_NOTA_2) AS OBSERVACAO2,
SUM(N1.OBSERVACAO_NOTA_3) AS OBSERVACAO3,
SUM(N1.TRAB_GRUPO_NOTA_1) AS TRABGRUPO1,
SUM(N1.TRAB_GRUPO_NOTA_2) AS TRABGRUPO2,
SUM(N1.TRAB_GRUPO_NOTA_3) AS TRABGRUPO3,
SUM(N1.SEMINARIO_NOTA_1) AS SEMINARIO1,
SUM(N1.SEMINARIO_NOTA_2) AS SEMINARIO2,
SUM(N1.SEMINARIO_NOTA_3) AS SEMINARIO3,
SUM(N1.PAINEL_NOTA_1) AS PAINEL1,
SUM(N1.PAINEL_NOTA_2) AS PAINEL2,
SUM(N1.PAINEL_NOTA_3) AS PAINEL3,
SUM(N1.DEBATE_NOTA_1) AS DEBATE1,
SUM(N1.DEBATE_NOTA_2) AS DEBATE2,
SUM(N1.DEBATE_NOTA_3) AS DEBATE3,
SUM(N1.AUTOAVALIACA_NOTA_1) AS AUTOAVAL1,
SUM(N1.AUTOAVALIACA_NOTA_2) AS AUTOAVAL2,
SUM(N1.AUTOAVALIACA_NOTA_3) AS AUTOAVAL3,
SUM(N1.recuperacao1) AS recuperacao1,
SUM(N1.recuperacao2) AS recuperacao2,
SUM(N1.recuperacao3) AS recuperacao3,
SUM(N1.recuperacao4) AS recuperacao4,
SUM(N1.recuperacao_final) AS recuperacao_final,
SUM(N1.chamada2_regular) AS chamada2_regular,
SUM(N1.chamada2_periodo) AS chamada2_periodo


from NOTAS n1 left join ALUNOTURMA al on n1.matricula_aluno_notas = al.matricula_aluno and
(n1.codigo_turma_notas = al.codigo_turma)

where n1.codiemp = :pCODIEMP
and n1.codigo_turma_notas = :pTURMA
and n1.disciplina_notas = :pDISCIPLINA
and n1.bimestre = :pBIMESTRE

group by n1.codigo,
n1.matricula_aluno_notas,
n1.codigo_turma_notas,
al.numero,
n1.bimestre

order by NUMERO
INTO :MATRICULA_ALUNO_NOTAS,
:CODIGO_TURMA_NOTAS,
:NUMERO,
:BIMESTRE,
:TRABINDVIDUAL1,
:TRABINDVIDUAL2,
:TRABINDVIDUAL3,
:PROVA1,
:PROVA2,
:PROVA3,
:OBSERVACAO1,
:OBSERVACAO2,
:OBSERVACAO3,
:TRABGRUPO1,
:TRABGRUPO2,
:TRABGRUPO3,
:SEMINARIO1,
:SEMINARIO2,
:SEMINARIO3,
:PAINEL1,
:PAINEL2,
:PAINEL3,
:DEBATE1,
:DEBATE2,
:DEBATE3,
:AUTOAVAL1,
:AUTOAVAL2,
:AUTOAVAL3,
:RECUPERACAO1,
:RECUPERACAO2,
:RECUPERACAO3,
:RECUPERACAO4,
:RECUPERACAO_FINAL,
:CHAMADA2_REGULAR,
:CHAMADA2_PERIODO
DO
BEGIN

media_bimestral = TRABINDVIDUAL1 + TRABINDVIDUAL2 + observacao1 + observacao2+ PROVA1+PROVA2;

SUSPEND;
END
END
Osmar

Osmar

Responder

Posts

28/09/2020

Emerson Nascimento


tente algo assim:

-- é somente a soma das notas? não efetua divisão pelo número de notas? 
media_bimestral = TRABINDVIDUAL1 + TRABINDVIDUAL2 + observacao1 + observacao2 + PROVA1 + PROVA2;

if (media_bimestral  <= 2.2) then
  media_bimestral  = 2;
else
if (media_bimestral <= 2.7) then
  media_bimestral = 2.5;
else
if (media_bimestral <= 3) then
  media_bimestral = 3;

suspend;
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar