/*se verifica si el alumno pierde el ano deacuerdo al 
maximo de materias q puede perder en el a?o*/
select id_alu , apr.tot,if(apr.tot>=max_mat_perd,'n','s') as aprueba  from(
		/*se cuenta las materias perdidas por area*/
		select id_alu,val_apr,count(val_apr) as tot from (
			/*se calcula el promedio de las materias especiales agrupadas por area de la nota definitiva */
				select id_alu,are_fin as cod_mat, are_fin, esp_mat, avg(nota_d) as def
				from seg_final 
				where esp_mat='s' and (id_peri<>( select id_peri from periodo where per_not_fin='s') ) /*ALU*/
				group by id_alu,are_fin
				union 
			/*se calcula el promedio de las materias NO especiales agrupadas por materia de la nota definitiva*/
				select id_alu, cod_mat, are_fin  , esp_mat, avg(nota) as def
				from seg_final 
				where esp_mat='n' and (id_peri<>( select id_peri from periodo where per_not_fin='s') ) /*ALU*/
				group by id_alu,cod_mat
			
			) s
		inner join rangos_valora r on s.def >= r.min and s.def <= r.max 
		inner join tipvalora v on v.id_val=r.id_val
		where val_apr='n'
		group by id_alu,val_apr
	
) apr
inner join anolectivo on actual='s' 