﻿USE akrcsist_bd0003_2026;

CREATE OR REPLACE VIEW vw_monitoreo_balance_dimension AS
SELECT
    YEAR(m.fecha) AS anio,
    m.id_docente,
    p.numero_documento AS dni,
    COALESCE(NULLIF(p.nombre_completo, ''), TRIM(CONCAT_WS(' ', p.apellido_paterno, p.apellido_materno, p.nombres))) AS docente,
    m.momento_monitoreo,
    i.codigo AS instrumento_codigo,
    i.nombre AS instrumento,
    ne.descripcion AS nivel,
    dim.codigo AS dimension_codigo,
    dim.nombre AS dimension,
    COUNT(DISTINCT m.id_monitoreo) AS monitoreos,
    ROUND(AVG(
        CASE ind.tipo_respuesta
            WHEN 'NIVEL' THEN (r.puntaje / 4) * 100
            ELSE r.puntaje * 100
        END
    ), 2) AS promedio_dimension
FROM mon_respuesta r
INNER JOIN mon_indicador ind ON ind.id_indicador = r.id_indicador
INNER JOIN mon_dimension dim ON dim.id_dimension = ind.id_dimension
INNER JOIN mon_instrumento i ON i.id_instrumento = dim.id_instrumento
INNER JOIN mon_monitoreo m ON m.id_monitoreo = r.id_monitoreo
INNER JOIN docente d ON d.id_docente = m.id_docente
INNER JOIN persona p ON p.id_persona = d.id_persona
LEFT JOIN nivel_educativo ne ON ne.id_nivel = m.id_nivel
WHERE m.estado = 'CERRADO'
GROUP BY
    YEAR(m.fecha),
    m.id_docente,
    p.numero_documento,
    COALESCE(NULLIF(p.nombre_completo, ''), TRIM(CONCAT_WS(' ', p.apellido_paterno, p.apellido_materno, p.nombres))),
    m.momento_monitoreo,
    i.codigo,
    i.nombre,
    ne.descripcion,
    dim.codigo,
    dim.nombre,
    dim.orden;

