public String getpromedioGeneral(Int64 id_estudiante)
    {
        clsDb  db  = new clsDb();
        String SQL = "select id_estudiante,sum(promedio)/count(*) as promedioFinal from ( " +
                     "select id_estudiante,sum(promedio)/count(distinct d.id_asignacion) as promedio,idarea,descripcion " +
                     "from( SELECT " +
                     " c.id_estudiante, c.id_asignacion,ar.id as idarea,ar.descripcion, " +
                     " CAST ( ((SUM(c.valor * cc.porcentaje / 100.0))*(convert(float,asp.porcentaje)/10) )/(select nota_maxima from dbo.anio_escolar where estado='A') As decimal(18,2))  AS promedio " +
                     " FROM dbo.calificacion c " +
                     " INNER JOIN dbo.calificacion_configuracion cc   ON cc.id = c.id_calificacion_configuracion " +
                     " INNER JOIN dbo.asignacion a ON a.id = c.id_asignacion " +
                     " INNER JOIN dbo.materia m ON m.id = a.id_materia " +
                     " INNER JOIN dbo.estudiante e ON e.id = c.id_estudiante " +
                     " inner join dbo.anio_escolar_periodo asp on asp.id=cc.id_periodo " +
                     " INNER JOIN area ar   ON ar.id =m.id_area " +
                     "         WHERE id_estudiante = " + id_estudiante + " " +
                     "         AND cc.id_periodo    <= 4 " +
                     "         AND cc.estado = 'A' " +
                     "         AND c.estado = 'A' " +
                     "         AND e.estado = 'A'  " +
                     "         GROUP BY c.id_estudiante,c.id_asignacion " +
                     "         ,M.descripcion " +
                     "         ,asp.porcentaje, " +
                     " ar.id " +
                     " ,ar.descripcion " +
                     " ) d " +
                     " group by id_estudiante,idarea,descripcion " +
                     " ) as f " +
                     " group by id_estudiante";
        String calificacion = "";

        try
        {
            SqlConnection con = db.conexion();
            con.Open();
            SqlCommand    com    = new SqlCommand(SQL, con);
            SqlDataReader reader = com.ExecuteReader();
            while (reader.Read())
            {
                calificacion = Convert.ToDecimal(reader["promedioFinal"].ToString()).ToString("#.##");
            }
            con.Close();
            return(calificacion);
        }
        catch (Exception ex)
        {
            return(calificacion);
        }
    }