Hola a todos!!
Cuando una matriz de equivalencia, otorga por dos actividades una, en forma total y la escala de nota de exámenes no tiene decimales, la nota de la actividad que se otorga va redondeada?
4 +7 = 11 / 2 = 5.5 debería tener un 6? O hace otra cosa?
Gracias por su tiempo.
¡Hola Ana! ¿Cómo estás?
Dicho comportamiento se regula a través del parámetro equiv_automatica_ajustar_nota. Si dicho parámetro está configurado como “No se ajusta” entonces en los casos que señalás no se pasará una nota a la equivalencia. Si el parámetro está configurado como “Se ajusta nota” entonces en esos casos la nota se ajustará redondeandose a la nota más cercana. Si hay dos notas a la misma distancia de la nota final promedio (5.5) por ejemplo las notas 5 y 6, toma la nota mayor que en este caso sería 6.
La nota de cada equivalencia a otorgar se registra según la escala de nota definida para equivalencias en el plan de estudios para esa actividad.
¡Saludos!
Ok. Gracias.
Ahora necesito saber porqué si:
ACTIVIDAD 1 nota = 4 y ACTIVIDAD 2 nota = 5, cuando le otorga la nota en la ACTIVIDAD 3, ajusta la nota a 4 y no a cinco. La escala de notas es la misma para las 3 actividades.
Hice una prueba en base (SELECT round((4+5)/2) dá 4, y SELECT round(4.50) da 5.
Es importante porque necesitamos ajustar la resolución.
Porque el calculo no se hace como lo estas haciendo sino en base a la posición de la nota dentro de cada escala de notas para el mismo resultado (en este caso son notas con resultado Aprobado) y en base a esa posicion promedio busca la nota en la escala de notas de la equivalencia que se encuentre en esa posición o mas cerca de esa posición.
Como son las escalas de notas de estas tres actividades?
¿La actividad 1 o 2 su aprobación es por una promoción?
La escala de notas es la misma en las 3 actividades. Te adjunto captura de pantalla.
Necesito saber que hace con X.50, para en todo caso pedir que ratifiquen la resolución que dice que debería redondear para arriba. En este caso darle un 5.
El redondeo se hace hacia arriba.
El caso lo tenes en la base o era una duda que tenias?
Si existe el caso, podras decirme si alguna de las notas origen de la equivalencia corresponde a una promocion?
El caso es real, y el alumno está reclamando la nota, porque la resolución dice que el redondeo es hacia arriba.
La notas son 4 y 5, con la escala de notas que te mandé en ambas actividades y ninguna es por promoción. La matriz de equivalencias le otorgó la actividad de destino, con la misma escala, un 4 y no un 5.
La matriz no es migrada, fue hecha en Guarani 3 por cambio de plan.
No redondó hacia arriba, (4 + 5)/2 = 4.50, vos decis que debería redondear a 5? porque no fue lo que hizo.
No hay problema, pero si los casos en que los decimales son con 50, no redondea hacia arriba, tenemos que rectificar la resolución para no tener problemas con los reclamos.
Ana, por favor proba lo siguiente.
En este ejemplo tome la escala de notas nro 103, que tiene las notas: 0,1,2,3,4,5,6,7,8,9, 10
Donde 0 a 3 = Desaprobado y 4 a 10 = Aprobado
select * from sga_escalas_notas_det where escala_nota = 103
SELECT * FROM get_equiv_nota (array[103,103], array[‘5’,‘6’], ‘A’, 103, false, false); – 5
SELECT * FROM get_equiv_nota (array[103,103], array[‘5’,‘6’], ‘A’, 103, false, true); – null
SELECT * FROM get_equiv_nota (array[103,103], array[‘5’,‘6’], ‘A’, 103, true, false); – 6
SELECT * FROM get_equiv_nota (array[103,103], array[‘5’,‘6’], ‘A’, 103, true, true); – null
Lo que esta resaltado es como debería estar ejecutandose la funcion para calcular la nota de la equivalencia. El ultimo parametro de la funcion correpsonde al valor del parámetro del sistema “equiv_automatica_ajustar_nota”. En ese caso fijate que paso “false” con lo cual al no encontrar la nota 5.5 que es el promedio entre 5 y 6, la nota que devuelve es la nro 6 porque como 5 y 6 estan a la misma distancia de 5.5, recupera la nota mas alta que es 6.
Por favor fijate de hacer esta prueba pasandole reemplazando la escala de notas 103 por la que corresponde y viendo que devuelve en cada uno de los casos. Ademas revisa ese parametro y avisame como lo tenes definido.
Aunque si no se ajusta la nota, la equivalencia deberia quedar sin nota, porque al no encontrar la nota 5.5 en la escala de notas entonces no asigna nota.
Otro tema a verificar es en esa escala de notas el valor del campo “orden” de cada nota.
Nota - Orden
0 - 1
1 - 2
2 - 3
…
5 - 6
6 - 7
…
10 - 11
Ale:
Los select que me mandas con la escala que tengo dan exactamente lo mismo.
Pero fijate los siguientes:
SELECT * FROM get_equiv_nota (array[8,8], array[‘4’,‘5’], ‘A’, 8, false, false); – 5
SELECT * FROM get_equiv_nota (array[8,8], array[‘4’,‘5’], ‘A’, 8, false, true); – null
SELECT * FROM get_equiv_nota (array[8,8], array[‘4’,‘5’], ‘A’, 8, true, false); – 4
SELECT * FROM get_equiv_nota (array[8,8], array[‘4’,‘5’], ‘A’, 8, true, true); – null
El tercero debería dar 5 y da 4
Ana, te envio la funcion “get_equiv_nota” por la solicitud 38761. Actualizala y volve a probar. No entiendo porque te da exactamente al reves del ejemplo que te envie.
Ale: Puse la función que me mandaste y le hice un seguimiento al query.
SELECT * FROM get_equiv_nota (array[8,8], array[‘4’,‘5’], ‘A’, 8, true, false);
Te lo paso haber si te das cuenta que es lo que está pasando:
NOTICE: Escala Destino (8)
NOTICE: Resultado Origen (A)
NOTICE: Cantidad de Notas (2)
NOTICE: pEscalaOrigen[i] (8)
NOTICE: pNotaOrigen[i] (4)
NOTICE: pEscalaOrigen[i] (8)
NOTICE: pNotaOrigen[i] (5)
NOTICE: _resultado_nota (A)
NOTICE: _orden (5)
NOTICE: _cant_notas_escala (7.000)
NOTICE: _posicion (1.000)
NOTICE: _porcentaje (14.286)
NOTICE: _resultado_nota (A)
NOTICE: _orden (6)
NOTICE: _cant_notas_escala (7.000)
NOTICE: _posicion (2.000)
NOTICE: _porcentaje (42.857)
NOTICE: _porcentaje_origen (21.428)
NOTICE: _cant_notas_destino (7.000)
NOTICE: _porcentaje_aux (14.286)
NOTICE: _porcentaje_aux (28.571)
NOTICE: _porcentaje_aux (42.857)
NOTICE: _porcentaje_aux (57.143)
NOTICE: _porcentaje_aux (71.429)
NOTICE: _porcentaje_aux (85.714)
NOTICE: _porcentaje_aux (100.000)
NOTICE: _porcentaje_max (28.571)
NOTICE: _porcentaje_min (14.286)
NOTICE: abs(_porcentaje_max - _porcentaje_origen) <= abs(_porcentaje_min - _porcentaje_origen) (f)
NOTICE: _porcentaje_destino (14.286)
NOTICE: _NotaDestino (4)
Ana, fijate de cambiar en esa funcion en donde dice:
_porcentaje_aux := round(_posicion * 100 / _cant_notas_destino,3);
por
_porcentaje_aux := trunc(_posicion * 100 / _cant_notas_destino,3);
El problema se da con el 3er decimal que por algun motivo en tu base en uno de los valores hay una diferencia en el 3er decimal y eso hace que luego la comparacion que hace al final se vaya por el ELSE devolviendo la nota 4 y no la 5.
El problema se da cuando hace la cuenta: 100 / 7 = 14.28571
Usando el round(14.28571,3) da 14.286 y trunc(14.28571,3) da 14.285 y ahi esta la diferencia que luego hace que devuelva la nota 4 y no la 5.
Probalo con otras combinaciones de notas para ver que de bien:
SELECT * FROM get_equiv_nota (array[8,8], array[‘9’,‘9’], ‘A’, 8, true, false); – deberia dar 9
SELECT * FROM get_equiv_nota (array[8,8], array[‘7’,‘10’], ‘A’, 8, true, false); – deberia dar 9 (promedio es 8.5 y se toma la nota mas cercana que seria 8 y 9 y de estos dos el 9)
SELECT * FROM get_equiv_nota (array[8,8], array[‘8’,‘10’], ‘A’, 8, true, false); – deberia dar 9
SELECT * FROM get_equiv_nota (array[8,8], array[‘9’,‘10’], ‘A’, 8, true, false); – deberia dar 10
Podes probarlo y nos avisas.
Ale:
Ahora si da correcto, corrijo en producción. Pregunta, porqué decis que en “mi base”, si lo que está haciendo la función de redondeo es correcto?
Otra consulta: modifiqué la función “get_equiv_nota” no la personalicé, por lo que voy a perderla o va a venir la modificación en alguna versión?
Incluiremos este cambio del round por trunk en la version 3.16 a partir del GDS que habias cargado.
Asi que actualizala en producción, se va a recrear cuando pases a 3.16 asi que no hay problema. No lo pongas como personalizacion.
Preguntaba porque te daba diferente, porque las escalas de notas son exactamente la misma. Esperaría que dieran el mismo resultado.