Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE OR REPLACE FUNCTION esq_ceac_planclase.f_concatenar_respuestas_docente_periodo(
- p_idpersonal numeric,
- p_idperiodo integer,
- p_idmateria_unica integer)
- RETURNS text
- LANGUAGE 'plpgsql'
- COST 100
- VOLATILE
- AS $BODY$
- DECLARE
- evaluacionjson text;
- BEGIN
- SELECT (('['::text || array_to_string(array_agg(regexp_replace(regexp_replace(tbl_plc_unidades_seguimiento.json_prom_preguntas, ']'::text, ''::text, 'g'::text), '\['::text, ''::text, 'g'::text)), ','::text)) || ']'::text) into evaluacionjson
- FROM esq_ceac_planclase.tbl_plc_unidades_seguimiento
- inner join esq_ceac_planclase.tbl_plc_planclase pc on pc.idregistro = tbl_plc_unidades_seguimiento.idplanclase
- WHERE pc.iddocente=p_idpersonal and pc.idperiodo = p_idperiodo and pc.idmateria = p_idmateria_unica;
- return evaluacionjson;
- END;
- $BODY$;
- CREATE OR REPLACE FUNCTION esq_ceac_planclase.f_promedio_pregunta_docente(
- p_idpersonal numeric,
- p_idperiodo integer,
- p_idpregunta numeric,
- p_idmateria_unica integer)
- RETURNS numeric
- LANGUAGE 'plpgsql'
- COST 100
- VOLATILE
- AS $BODY$
- DECLARE
- r record;
- v_promedio numeric;
- v_count integer;
- BEGIN
- v_count = 0;
- v_promedio = 0;
- FOR r IN select (j.value ->> 'promedio')::numeric AS promedio
- FROM json_array_elements((esq_ceac_planclase.f_concatenar_respuestas_docente_periodo(p_idpersonal,p_idperiodo,p_idmateria_unica))::json) j(value)
- where (j.value ->> 'id_pregunta')::numeric = p_idpregunta
- LOOP
- v_count = v_count +1;
- v_promedio = v_promedio + r.promedio;
- END LOOP;
- if(v_count > 0 ) then
- return v_promedio/v_count;
- else
- return 0;
- end if;
- END;
- $BODY$;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement