💡 Insight clave: Permite identificar estacionalidad (¿crece en temporada alta?), impacto de eventos (pandemia, expansión), y proyectar la plantilla para los próximos meses con regresión simple. Con 52 puntos de datos se puede hacer una proyección a 6 meses.
SELECT fecha, razon_social,
COUNT(DISTINCT codigo_empleado) AS activos
FROM historico_empleados
WHERE operacion ILIKE '%operacion%'
GROUP BY fecha, razon_social
ORDER BY fecha;
💡 Detecta en qué meses la empresa perdió más talento del que ingresó. Barras verdes = crecimiento, rojas = reducción, gris = acumulado.
SELECT fecha,
SUM(CASE WHEN operacion ILIKE '%ingreso%' THEN 1 ELSE 0 END) AS ingresos,
SUM(CASE WHEN operacion ILIKE '%retiro%' THEN 1 ELSE 0 END) AS retiros
FROM historico_empleados
GROUP BY fecha ORDER BY fecha;
💡 Identifica qué hoteles crecieron o contrajeron su plantilla vs. el año anterior. Útil para gerencia en decisiones de inversión en personal.
WITH act AS (
SELECT razon_social, fecha, COUNT(DISTINCT codigo_empleado) n
FROM historico_empleados WHERE operacion ILIKE '%operacion%'
GROUP BY razon_social, fecha
)
SELECT a.razon_social,
a.n AS activos_actual,
b.n AS activos_ly,
ROUND((a.n - b.n) * 100.0 / NULLIF(b.n,0),1) AS var_pct
FROM act a JOIN act b ON a.razon_social=b.razon_social
AND a.fecha = b.fecha + INTERVAL '1 year'
WHERE a.fecha = (SELECT MAX(fecha) FROM act);
💡 El gráfico más poderoso para hotelería. Permite ver de un vistazo qué hotel tiene rotación crónica (toda la fila en rojo) vs. picos puntuales. También revela estacionalidad: ¿siempre rota más en diciembre o julio? ¿Es estructural o puntual?
WITH base AS (
SELECT razon_social, fecha,
COUNT(DISTINCT codigo_empleado) FILTER (WHERE operacion ILIKE '%retiro%') AS retiros,
COUNT(DISTINCT codigo_empleado) FILTER (WHERE operacion ILIKE '%operacion%') AS activos
FROM historico_empleados
GROUP BY razon_social, fecha
)
SELECT razon_social, fecha,
ROUND(retiros * 100.0 / NULLIF(activos, 0), 1) AS pct_rotacion
FROM base ORDER BY razon_social, fecha;
💡 El rolling 12m es el estándar de industria para rotación — elimina estacionalidad. La línea roja punteada es el benchmark hotelero Colombia (~65%). ¿Estamos por encima o por debajo?
💡 El análisis más profundo disponible. Revela si los nuevos empleados se van en el primer mes (problema de onboarding), a los 3 meses (cultura) o al año (compensación). Requiere cruzar ingresos con retiros por codigo_empleado.
💡 Visualiza la estructura etaria y de género simultáneamente. ¿Es una pirámide joven (riesgo: alta rotación) o madura (riesgo: pensiones)? ¿Hay brechas de género en rangos etarios específicos?
SELECT
CASE
WHEN EXTRACT(YEAR FROM AGE(fecha_nacimiento)) < 25 THEN '18–24'
WHEN EXTRACT(YEAR FROM AGE(fecha_nacimiento)) < 35 THEN '25–34'
WHEN EXTRACT(YEAR FROM AGE(fecha_nacimiento)) < 45 THEN '35–44'
WHEN EXTRACT(YEAR FROM AGE(fecha_nacimiento)) < 55 THEN '45–54'
ELSE '55+'
END AS rango_edad,
INITCAP(sexo) AS genero,
COUNT(DISTINCT codigo_empleado) AS total
FROM historico_empleados
WHERE fecha = (SELECT MAX(fecha) FROM historico_empleados)
AND fecha_nacimiento IS NOT NULL AND sexo IS NOT NULL
GROUP BY rango_edad, genero;
💡 Permite identificar hoteles con brecha de género significativa y establecer metas de equidad. En hotelería es común que Habitaciones/AMA sean mayoría femenina y Mantenimiento masculina — ¿coincide?
💡 Con 52 meses de histórico podemos calcular cuándo apareció cada empleado por primera vez como proxy de antigüedad. Revela si la empresa tiene base de empleados maduros (curva desplazada a la derecha) o es predominantemente nueva. Nota: limitado a empleados registrados desde Ene 2022.
SELECT
CASE
WHEN meses < 6 THEN '0–6 meses'
WHEN meses < 12 THEN '6–12 meses'
WHEN meses < 24 THEN '1–2 años'
WHEN meses < 36 THEN '2–3 años'
WHEN meses < 48 THEN '3–4 años'
ELSE '4+ años'
END AS rango_antiguedad,
COUNT(*) AS empleados
FROM (
SELECT codigo_empleado,
EXTRACT(MONTH FROM AGE(NOW(), MIN(fecha))) AS meses
FROM historico_empleados
GROUP BY codigo_empleado
) t
GROUP BY rango_antiguedad
ORDER BY MIN(meses);
💡 Visualización compacta de toda la estructura de la organización. De un vistazo se ve qué empresa tiene más peso, qué hotel, qué área. Clic → drill down. Muy poderoso para presentaciones a dirección.
💡 Muestra la evolución de la composición del grupo — ¿qué empresa aportó más crecimiento? ¿Alguna se redujo mientras otras crecían? Útil para análisis de portfolio de hoteles.
💡 Identifica las áreas de mayor expansión (ej. nuevos restaurantes) y contracción. Combinado con el filtro de hotel, permite a los gerentes entender la dinámica de su área específica.
| # | Gráfico / Feature | Impacto | Esfuerzo | Datos disponibles | Prioridad |
|---|---|---|---|---|---|
| 1 | Heatmap Rotación Hotel × Mes | ⭐⭐⭐ Alto | Medio | ✅ historico_empleados | Alta |
| 2 | Evolución plantilla 52m (área apilada) | ⭐⭐⭐ Alto | Bajo | ✅ historico_empleados | Alta |
| 3 | Pirámide poblacional por género | ⭐⭐ Medio | Bajo | ✅ historico_empleados | Alta |
| 4 | Variación neta mensual (waterfall) | ⭐⭐ Medio | Bajo | ✅ historico_empleados | Media |
| 5 | Distribución de antigüedad (proxy) | ⭐⭐ Medio | Bajo | ✅ historico_empleados | Media |
| 6 | Tab "Histórico" dedicado (diseño) | ⭐⭐⭐ Alto | Medio | ✅ Con gráficos 1–5 | Media |
| 7 | Treemap Empresa → Hotel → CECO | ⭐⭐ Medio | Medio | ✅ historico_empleados | Media |
| 8 | Índice rotación rolling 12m (KPI bar) | ⭐⭐⭐ Alto | Bajo | ✅ historico_empleados | Media |
| 9 | Análisis de cohorte de retención | ⭐⭐⭐ Alto | Alto | ✅ historico_empleados | Baja |
| 10 | Sidebar navigation (rediseño) | ⭐ Bajo | Alto | N/A | Baja |