Compatibilidad entre G3 y SIDCER en promedio de egresados

Buen dia:

Nos encontramos en versión 3.17 de G3. Sabemos que al egresar un alumno, se calcula su promedio y se guarda en una tabla con 3 dígitos decimales, para ello primero se realiza un redondeo.

De rectorado nos dicen que los analíticos deben ir con 2 dígitos decimales porque de esa manera lo levanta SIDCER. Entonces, en la impresión del analítico se vuelve a realizar un redondeo a dos dígitos.

Nos ocurrió situaciones que debe pasar muy de vez en cuando (pero ya pasó más de una vez) donde el promedio se va hacia arriba y no correspondería. Por ejemplo:

Un promedio de 7,39455555, se va a almacenar en la BD como 7,395 y cuando vamos a imprimir el analítico (que lo tenemos personalizado), el promedio va a quedar 7,40, en ambos casos por acarreo de redondeo…Pero de rectorado nos reclaman que el promedio debería ser 7.39.

Tienen pensada esa situación? No deberían ambos sistemas manejar la misma cantidad de decimales? Hay alguna forma de resolverlo?

Saludos

Ezequiel Molina
Fac. de Cs. Agrarias - UNJu

Buenas, nosotros tenemos G3.16.2 conectado al SIDCER
para ésto nosotros personalizamos la función de los promedios para que traiga dos digitos y no tres, entonces cuando guarda el dato en
sga_certificados_otorg (en donde figuran tambien con tres digitos) guardamos dos digitos, asimismo los Analíticos están personalizados para dos digitos

Esa es la solución que encontramos nosotros

Saludos

Hola Luciana:

Gracias por la respuesta, lo habíamos pensado también como posible solución, pero nos preocupa que hacia adelante se decida usar para todo (también SIDCER) o que exista algún lugar donde necesariamente hayan 3 dígitos, y los egresados históricos los hayamos redondeado a dos para guardar en la BD, con lo que se perdería el dato original.

Sería interesante saber si es necesario por algún motivo en particular Guaraní almacene 3 dígitos mientras que SIDCER pide 2, nos podrá comentar alguno de las administradores?

Gracias!

Ezequiel

Hola Ezequiel, creo que alguna institución tenía escalas con 3 decimales y de ahi fue que en las escalas de notas permitimos hasta 3 decimales y el promedio quedó registrandose asi.

Un promedio de 7,39455555, se va a almacenar en la BD como 7,395 y cuando vamos a imprimir el analítico (que lo tenemos personalizado), el promedio va a quedar 7,40, en ambos casos por acarreo de redondeo...Pero de rectorado nos reclaman que el promedio debería ser 7.39.
Respecto a esto, habría que redondear o truncar a 2 decimales? Porque una accion u otra tendrá diferentes consecuencias.

¿Deberia truncarse a 2 decimales cuando se muestre el promedio? (Certificado Analitico, SIDCer, Certificados de materias aprobadas, etc…) ?
Luciana, Uds tambien tienen de estos casos igual que lo que comenta Ezequiel?
Porue de ser asi deberíamos empezar a registrar el promedio con y sin aplazos en la solicitud de titulos para que solo registre solo dos decimales y en los diferentes certificados visualizar 2 decimales.

Exactamente, el analítico sale con dos decimales y el SIDCERlo toma con dos decimales
si guarda los tres en el registro de sga_certificados_otorg, despues no te coincide el Analítico con lo que toma el SIDCER de ese registro

Vamos a modificar en el Certificado Analítico y SIDCer para que informe los promedios con 2 decimales (no redondeo sino que corte a dos decimales).

Alejandro:

Creo que quedaría definir qué es lo correcto, si redondear o truncar. El problema si mal no estoy interpretando, se produce porque Guaraní realiza dos redondeos, uno para almacenar en la BD 3 decimales y otro para que el detalle final tenga 2 decimales. Por su parte Sidcer levanta los 3 decimales y los redondea a 2…en ese sentido tanto el detalle final como Sidcer van a coincidir, pero si uno calcula con una calculadora o Excel, el resultado puede ser diferente.

Como les decía, el ejemplo claro es un número como 7,39455555. Si lo ponemos en Excel y le quitamos decimales hasta 2 cifras, nos queda 7,39 mientras que en Guaraní (y Sidcer) le pondría 7,40.

Un creería que son casos límites que van a ocurrir muy de vez en cuando, sin embargo de unos 30 egresados, ya nos pasó dos veces.

Me parece que es cuestión de definir un criterio, tenerlo por escrito y mostrarle eso, a la gente que calcula “a mano” cuando hacen el control para que usen idéntico criterio.

Espero que sea de utilidad la opinión.

Saludos

Ezequiel

Ezequiel, desde el SIU vamos a hacer el ajuste, el tema es si truncar o redondear a dos decimales.
No sabemos cual es la correcta, asi que tomamos la decisión de truncar, es decir que no considere el 3er decimal.
Tambien vamos a hacer que el proceso que registra la solicitud del titulo que es donde se calcula el promedio y se registra en la base, que también trunque a dos decimales.
Si alguna institución necesita que se redondee tendrá que personalizarlo y cambiar el truncado por el redondeo.
¿Que opinan?

me parece bárbaro

Alejandro

No estoy seguro si truncar sería la mejor opción. Un promedio de 7.3945 quedaría 7.39 lo cual es correcto, un promedio de 7.3989 quedaría también 7.39, es correcto? sería muy discutible.

La sugerencia sería la de redondear a dos decimales y recién cortar el tercer dígito. Es decir que el 7.3945 llevado a dos decimales es 7.39 y en la BD se guarde como 7.390 (y no como 7.395 como se guarda actualmente). Insisto en que el problema está en el doble redondeo.

Saludos

Ezequiel, según tu definición sería redondear a dos decimales.
7.1085 = 7.11
8.5600 a 8.5649 = 8.56
8.5650 a 8.5699 = 8.57

Luciana, porque decias de truncar a dos decimales y no redondear como comenta Ezequiel?

Pueden consultar y nos avisan?

Alejandro:

Exactamente, esa me parece una forma más lógica, como funciona una calculadora o Excel y al menos en la UNJu entiendo que siempre se trabajó de esa manera.

Saludos

Ezequiel

Yo redondeo no trunco. Quizá me expresé mal, perdón.

Hola

El punto creo que es no redondear dos veces.
Si esto ocurre siempre puede presentarse el inconveniente.

Emilio

Finalmente se modificará el promedio para que se registre este dato en la solicitud de tiítulo con el redondeo a 2 decimales.
Igualmente se calculará de esa forma en los diferentes reportes donde se muestre el promedio: Ficha de la Persona >> Promedios, SIDCer, Araucano Nominal…

Emilio, creo no haya problema si se redondea mas de una vez. El número 8.463
Redondeado a 2 decimales es: 8.46
Si este numero lo volvemos a redondear a dos decimales sigue siendo 8.46

select round(round(round(round(round(8.463,2),2),2),2),2)

Hola

el punto no es redondear con la misma cantidad de decimales que tenes.

select round(round(round(round(round(8.4444455555,9),8),7),6),5)
vs.
select round(8.4444455555,2)

el punto de partida de este hilo es un ejemplo de redondeo a una cantidad de decimales y luego a otra.

Emilio

Buenas tardes:

Vuelvo sobre este tema porque nuevamente tuvimos inconveniente con el promedio de dos alumnos, que calculados con Calculadora o con Excel (control que realiza la gente de Rectorado antes de emitir un título) dan un valor y G3 otro diferente. Nos encontramos en versión 3.18.1.

Coincido con Emilio que el problema es que se redondea 2 veces (no explícitamente, sino que el primer redonde CREO que lo hace el motor para poder almacenar un valor con muchos decimales en una variable de 3 decimales). Paso a explicar el análisis con el ejemplo de uno de nuestros casos:

El promedio calculado resulta en 9.38 mientras que G3 informa 9.39

La primer parte de la función f_promedio, crea y carga una tabla temporal con las actividades del alumno sobre las cuales se va a calcular el promedio, luego realiza la suma de las notas y cuenta la cantidad de las mismas:


 SELECT SUM(e.valor_numerico), COUNT(*) 
      INTO _total_notas, _cantidad_actividades
      FROM _Tactividades as t,
           sga_escalas_notas_det as e
     WHERE (pConAplazos = 'S' OR (pConAplazos = 'N' AND t.resultado = 'A'))
       AND 
       t.nota IS NOT NULL
       AND e.escala_nota = t.escala_nota
       AND e.nota = t.nota
       AND e.valor_numerico IS NOT NULL;

El resultado en nuestro ejemplo es:


_total_notas = 366.000
_cantidad_actividades = 39

La division de ambos valores se asigna a la variable _promedio que está declarada con 3 decimales


_promedio := _total_notas / _cantidad_actividades;

Allí es donde entiendo que se realizaría el primer redondeo, si bien el número resultante es 9,3846154, aparentemente queda almacenado como 9.385.

La función devuelve dicho valor redondeado a 2 decimales


RETURN ROUND(_promedio,2);

El resultado es 9.39

Posibles soluciones:

1-Declarar _promedio con más decimales
2- RETURN ROUND(_total_notas / _cantidad_actividades,2) sin utilizar _promedio como variable intermedia

Aguardo comentarios para poder dar una respuesta a la gente de Rectorado, tal vez mientras tanto podríamos corregir en la tabla de egresados el valor resultante del promedio, dependiendo de su respuesta.

Gracias, Saludos!

Ezequiel Molina
Fac. de Cs. Agrarias - UNJu

Ezequiel, hace lo siguiente:
1- Definir la variable _promedio con dos decimales

  _promedio numeric(8,2);
_total_notas decimal(10,4);

2.-Cambiar (esta en dos veces)

_promedio := _total_notas / _cantidad_actividades;

por:

_promedio := ROUND(_total_notas / _cantidad_actividades, 2);

3.- Cambiar

RETURN ROUND(_promedio,2);

por:

RETURN _promedio;

Por favor probalo y avisanos, si eso lo resuelve metemos este cambio en version 3.19.1

Alejandro:

Efectivamente esa es la solución, cambiamos eso y los promedios sale correctamente, al menos los dos casos con los que teníamos diferencia.

Entonces dejamos así la función y ustedes lo incorporan en próximas versiones?

Muchas Gracias!

Saludos

Si, el ajuste lo enviaremos en la version 3.19.1. El calculo del promedio dentro de la funcion se hace con 5 decimales y luego se devuelve redondeado a 2 decimales.
Ejemplo:
8.27000 a 8.27499 → 8.27
8.27500 a 8.27999 → 8.28