Estadísticas y consultas SQL

Todos los editores académicos comparten el mismo punto ciego. Llega el momento de presentar estadísticas. Puede ser un informe anual, una solicitud de reindexación, un reporte al consejo editorial, una evaluación institucional. Y ahí empieza el caos.

Los datos existen —están en tu computadora, en archivos Word dispersos, en planillas Excel desordenadas, en PDFs de cada número publicado— pero nadie sabe cómo convertirlos en las cifras que te están pidiendo. ¿Cuántos artículos recibiste de autores internacionales? ¿Cuál es tu tasa de aceptación real? ¿Cuánto demora el proceso de revisión por pares?

Terminas pasando horas copiando y pegando entre archivos, contando manualmente en planillas, recalculando porcentajes con calculadora. Y siempre con la duda: ¿estos números son correctos?

Los sistemas tradicionales no ayudan: te dan reportes prefabricados que nunca muestran exactamente lo que necesitas. Siempre falta algo, siempre sobra algo, nunca es lo que te pidieron.

gbpublisher trabaja distinto: cada editor puede construir la consulta exacta que necesita. ¿Artículos por país? ¿Tiempo de revisión por área? ¿Producción mensual? Los datos están organizados y accesibles. Tú decides qué ver, cómo verlo y cuándo verlo.


El problema con los sistemas convencionales

La mayoría de plataformas editoriales encapsulan los datos tras interfaces restrictivas:

Reportes prefabricados

  • ❌ Limitados a lo que el proveedor consideró relevante
  • ❌ No cubren casos específicos de cada editorial
  • ❌ Estructura fija que no se adapta a evaluaciones institucionales

Solicitar desarrollos personalizados

  • ❌ Demora de semanas o meses
  • ❌ Costo adicional por cada reporte
  • ❌ Dependencia del proveedor para acceder a tus propios datos

Exportar y procesar manualmente

  • ❌ Exportaciones incompletas
  • ❌ Datos no relacionados (hay que cruzarlos manualmente)
  • ❌ Proceso propenso a errores

La solución de gbpublisher: SQL directo y seguro

gbpublisher invierte esta lógica: la base de datos es tuya, está en tu institución, y puedes consultarla directamente.

Qué puedes consultar

Cualquier información almacenada en la base:

Estadísticas de autores

  • Autores más prolíficos
  • Distribución por país, institución, género
  • Coautorías y redes de colaboración
  • Afiliaciones institucionales
  • Evolución temporal de participación

Análisis de artículos

  • Producción por año, volumen, número
  • Distribución temática (palabras clave, áreas)
  • Tipos de documento (original, revisión, comunicación)
  • Tiempos editoriales (recepción-aceptación-publicación)
  • Estados del flujo editorial

Referencias bibliográficas

  • Análisis de citaciones
  • Edad promedio de las referencias
  • Distribución por tipo de fuente
  • Autocitación y citación cruzada

Informes institucionales

  • Productividad por unidad académica
  • Internacionalización (coautorías internacionales)
  • Cumplimiento de métricas para indexadores
  • Datos para evaluaciones de agencias (CONICET, CONACYT, CNPq)

Seguridad garantizada

El sistema implementa protecciones técnicas robustas:

Solo lectura

  • Permite: SELECT (consultas de lectura)
  • Bloquea: DROP, DELETE, UPDATE, INSERT, ALTER

Cualquier intento de ejecutar operaciones destructivas es rechazado automáticamente antes de llegar a la base de datos.

Beneficios de esta arquitectura

Para el editor:

  • Puede explorar libremente sin riesgo de alterar datos
  • No necesita conocimientos avanzados de seguridad
  • Experimenta sin miedo a “romper algo”

Para el administrador del sistema:

  • No requiere crear usuarios con permisos restringidos
  • Las consultas son auditables
  • Imposible corrupción de datos desde la interfaz de consultas

Consultas guardadas: biblioteca personal de estadísticas

gbpublisher implementa un sistema de gestión de consultas SQL que permite guardar, organizar y reutilizar consultas con un solo clic.

Cómo funciona

1. Escribir y probar la consulta

El editor escribe la consulta SQL en el formulario, la ejecuta y verifica que los resultados sean correctos.

2. Guardar con nombre

Una vez validada, la consulta puede guardarse con:

  • Nombre descriptivo (por ejemplo: “Estadísticas anuales para CONICET”)
  • Comentarios (para qué sirve, cuándo usarla)

3. Reutilizar instantáneamente

Todas las consultas guardadas aparecen en un listbox dentro del formulario.

Para ejecutar una consulta previamente guardada:

  1. Seleccionar con doble click de la lista
  2. Click en “Ejecutar”
  3. Listo: resultados inmediatos

No es necesario recordar ni reescribir la consulta.


Ventajas del sistema de consultas guardadas

Para el editor individual

  • Biblioteca personal de consultas frecuentes
  • Sin memorizar sintaxis SQL compleja
  • Ejecución instantánea de reportes recurrentes
  • Documentación implícita (el nombre describe el propósito)

Para el equipo editorial

  • Conocimiento compartido (todos ven las consultas guardadas)
  • Estandarización de reportes institucionales
  • Capacitación progresiva (editores nuevos aprenden de consultas existentes)
  • Auditoría (la fecha de creación puede formar parte del nombre descriptivo)

Para la institución

  • Activo institucional (el conocimiento no se pierde si cambia el personal)
  • Reproducibilidad (la misma consulta genera resultados comparables en el tiempo)
  • Continuidad (nuevos editores continúan usando consultas establecidas)

Ejemplo de flujo de trabajo

Semana 1: Crear la consulta

Un editor necesita saber cuántos artículos de autores argentinos se publicaron cada año.

Escribe la consulta:

-- Artículos con al menos un autor argentino por año
SELECT
  YEAR(a.fecha_publicacion) AS año,
  COUNT(DISTINCT a.id) AS articulos
FROM articulos a
JOIN articulos_autores aa ON a.id = aa.articulo_id
JOIN autores au ON aa.autor_id = au.id
WHERE au.pais = 'Argentina'
  AND a.estado = 'publicado'
GROUP BY año
ORDER BY año DESC;

La ejecuta, verifica que funciona, y la guarda como:

  • Nombre: “Artículos con autores argentinos por año (2025-01-18)”

3 meses después: reutilizar la consulta

Otro editor necesita la misma información.

Sin sistema de consultas guardadas:

  • Buscar en emails/documentos quién había hecho esa consulta
  • Pedirle que la comparta
  • Copiar, pegar, adaptar (si está mal escrita, debuggear)
  • Tiempo: 30-45 minutos

Con gbpublisher:

  1. Abrir formulario de consultas
  2. Ver en el listbox: “Artículos con autores argentinos por año (2025-01-18)”
  3. Seleccionar, ejecutar
  4. Tiempo: 30 segundos

Año 2: actualización

El criterio cambia: ahora interesan artículos donde el primer autor es argentino.

El editor:

  1. Selecciona la consulta original del listbox
  2. Modifica: agrega AND aa.orden = 1
  3. Guarda como nueva consulta: “Artículos con primer autor argentino por año (2026-02-03)”
  4. Ambas consultas coexisten en el listbox (la original y la nueva)

Estructura típica de una biblioteca de consultas

Después de 6-12 meses de uso, una revista típica tiene:

Consultas de rutina (mensuales)

  • Informe mensual para consejo editorial
  • Artículos en cada etapa del flujo
  • Tiempo promedio de revisión del mes

Consultas para evaluaciones (anuales/bianuales)

  • Distribución geográfica de autores
  • Coautorías internacionales
  • Cumplimiento de tiempos editoriales
  • Artículos por área temática

Consultas de análisis estratégico (ad-hoc)

  • Evolución de participación por país
  • Instituciones más productivas
  • Análisis de referencias bibliográficas
  • Redes de colaboración

Consultas técnicas (para producción)

  • Validar integridad de metadatos
  • Detectar autores duplicados
  • Verificar completitud de afiliaciones
  • Listar artículos pendientes de ORCID

Exportación a CSV

Los resultados de las consultas pueden exportarse a formato CSV (valores separados por comas).

Por qué CSV y no otros formatos

CSV es un estándar abierto con ventajas técnicas y filosóficas:

Ventajas técnicas

  • ✅ Compatible con Excel, LibreOffice, Google Sheets
  • ✅ Procesable por R, Python, SPSS, STATA
  • ✅ Sin límite de filas
  • ✅ Texto plano: ligero, rápido, portable

Ventajas filosóficas (alineadas con soberanía tecnológica)

  • ✅ No depende de licencias comerciales
  • ✅ Los archivos de hace 30 años siguen siendo perfectamente legibles
  • ✅ Versionable con Git
  • ✅ Auditable (es texto plano)
  • ✅ Automatizable mediante scripts

Qué hacer con los archivos CSV

Gráficos y reportes

Importar en Excel/LibreOffice para generar:

  • Gráficos de barras, líneas, tortas
  • Tablas dinámicas
  • Reportes con formato institucional

Análisis estadístico

Procesar con herramientas especializadas:

  • R: análisis avanzado, visualizaciones con ggplot2
  • Python: pandas, matplotlib, seaborn
  • SPSS: análisis estadístico para ciencias sociales
  • STATA: econometría y ciencias sociales

Presentaciones

Integrar datos en:

  • PowerPoint / LibreOffice Impress
  • Informes institucionales
  • Dashboards web personalizados

Próxima funcionalidad: Vistas SQL

gbpublisher está considerando agregar soporte para vistas SQL.

Qué es una vista SQL

Una “tabla virtual” que representa el resultado de una consulta compleja.

Ejemplo:

CREATE VIEW articulos_completos AS
SELECT
  a.id,
  a.titulo,
  a.fecha_publicacion,
  GROUP_CONCAT(au.apellido, ', ', au.nombre SEPARATOR '; ') AS autores,
  GROUP_CONCAT(DISTINCT au.pais SEPARATOR '; ') AS paises
FROM articulos a
JOIN articulos_autores aa ON a.id = aa.articulo_id
JOIN autores au ON aa.autor_id = au.id
GROUP BY a.id;

Luego, consultar la vista es simple:

SELECT * FROM articulos_completos WHERE paises LIKE '%Argentina%';

Ventajas de las vistas

  • Simplificar consultas complejas (la complejidad queda encapsulada en la vista)
  • Consistencia (todos usan la misma “tabla virtual”)
  • Rendimiento (en algunos casos, MySQL optimiza las vistas)
  • Abstracción (el editor consulta algo que “parece una tabla simple”)

Implementación planificada

Las vistas se administrarán desde el mismo formulario:

  • Listbox separado para vistas (diferenciadas de consultas)
  • Creación mediante sintaxis CREATE VIEW
  • Eliminación segura (solo DROP VIEW, nunca tablas reales)
  • Documentación asociada (para qué sirve cada vista)

Aprender SQL básico

No es programación

SQL para consultas de lectura es más simple que fórmulas complejas de Excel:

-- Artículos publicados por año
SELECT YEAR(fecha_publicacion) AS año, COUNT(*) AS total
FROM articulos
WHERE estado = 'publicado'
GROUP BY año
ORDER BY año;

Esta consulta es casi lenguaje natural:

  • SELECT: “selecciona estas columnas”
  • FROM: “de esta tabla”
  • WHERE: “que cumplan esta condición”
  • GROUP BY: “agrupando por este criterio”
  • ORDER BY: “ordenados por este campo”

Curva de aprendizaje

Día 1-2: Consultas simples (SELECT, FROM, WHERE) Semana 1: Agregaciones (COUNT, SUM, AVG) Semana 2-3: Joins (cruzar tablas), GROUP BY Mes 1: Subconsultas, CASE, funciones de fecha

Con 4-5 horas de estudio, un editor puede construir el 90% de las consultas que necesitará.

Curva de aprendizaje real

Editor sin experiencia SQL

Semana 1: Ejecuta consultas existentes del listbox. Aprende qué información está disponible.

Semana 2-3: Modifica consultas existentes. Cambia fechas, filtros simples.

Mes 1: Escribe consultas básicas desde cero (SELECT simple, WHERE, ORDER BY).

Mes 2-3: Aprende JOINs, GROUP BY, funciones de agregación.

Mes 6: Construye consultas complejas y las guarda para el equipo.

Clave del éxito

El listbox de consultas guardadas es el mejor tutorial de SQL.

El editor aprende por:

  • Ejemplo: Ve consultas que funcionan
  • Modificación: Ajusta consultas existentes
  • Documentación implícita: Los nombres descriptivos explican el propósito
  • Experimentación segura: Solo lectura, no puede romper nada

Recursos de aprendizaje

Durante la implementación de gbpublisher, Estudio 2A proporciona:

  • Introducción a SQL para editores (capacitación incluida)
  • Biblioteca de 10 consultas listas para usar
  • Documentación de la estructura de la base de datos
  • Ejemplos comentados paso a paso

Ejemplos de consultas típicas

Autores más prolíficos

SELECT
  a.apellido,
  a.nombre,
  COUNT(*) AS articulos
FROM autores a
JOIN articulos_autores aa ON a.id = aa.autor_id
GROUP BY a.id
ORDER BY articulos DESC
LIMIT 20;

Distribución por país

SELECT
  pais,
  COUNT(*) AS total_autores
FROM autores
GROUP BY pais
ORDER BY total_autores DESC;

Artículos por año

SELECT
  YEAR(fecha_publicacion) AS año,
  COUNT(*) AS total
FROM articulos
WHERE estado = 'publicado'
GROUP BY año
ORDER BY año;

Instituciones más productivas

SELECT
  i.nombre AS institucion,
  COUNT(DISTINCT a.id) AS autores,
  COUNT(aa.articulo_id) AS articulos
FROM instituciones i
JOIN autores a ON a.institucion_id = i.id
JOIN articulos_autores aa ON aa.autor_id = a.id
GROUP BY i.id
ORDER BY articulos DESC
LIMIT 20;

Tiempo promedio de publicación

SELECT
  AVG(DATEDIFF(fecha_publicacion, fecha_recepcion)) AS dias_promedio
FROM articulos
WHERE estado = 'publicado'
  AND fecha_recepcion IS NOT NULL
  AND fecha_publicacion IS NOT NULL;

Coautorías internacionales

SELECT
  a.id,
  a.titulo,
  COUNT(DISTINCT au.pais) AS paises_distintos
FROM articulos a
JOIN articulos_autores aa ON a.id = aa.articulo_id
JOIN autores au ON aa.autor_id = au.id
WHERE a.estado = 'publicado'
GROUP BY a.id
HAVING paises_distintos > 1
ORDER BY paises_distintos DESC;

Artículos por área temática

SELECT
  pc.nombre AS area,
  COUNT(DISTINCT apc.articulo_id) AS articulos
FROM palabras_clave pc
JOIN articulos_palabras_clave apc ON pc.id = apc.palabra_clave_id
GROUP BY pc.id
ORDER BY articulos DESC;

Comparación con otros sistemas

Sistema Reportes Consultas Personalizadas Consultas Guardadas Reutilización
OJS/OMP ✅ Prefabricados ❌ No ❌ No ❌ No
Plataformas SaaS ✅ Dashboard ❌ O muy limitado ⚠️ Solo en planes premium ⚠️ Depende del proveedor
gbpublisher ⚠️ No prefabricados ✅ SQL completo ✅ Sí, ilimitadas ✅ Instantánea

Filosofía diferente:

  • Otros sistemas: Te damos reportes listos, no toques la base
  • gbpublisher: La base es tuya, construye la consulta que necesites, reutiliza lo que funciona

Preguntas frecuentes

¿Es seguro que los editores tengan acceso SQL?

Sí, completamente. El sistema solo permite SELECT (lectura). Es técnicamente imposible borrar, modificar o alterar datos desde el formulario de consultas.


¿Qué pasa si escribo mal una consulta?

En el peor caso, la consulta devuelve un error (lo muestra en pantalla) o no devuelve resultados. Nunca puede dañar la base de datos porque las operaciones destructivas están bloqueadas.


¿Las consultas guardadas son compartidas o personales?

Todas las consultas guardadas están disponibles para todos los usuarios de la instancia de gbpublisher, las consultas no están asociadas a ningún proyecto.

Esto fomenta:

  • Colaboración
  • Estandarización
  • Aprendizaje colectivo
  • Continuidad institucional

Si un editor necesita una consulta privada para experimentar, puede escribirla y ejecutarla sin guardarla.


¿Se pueden editar consultas ya guardadas?

No.

El flujo recomendado es:

  1. Seleccionar la consulta del listbox
  2. El texto se carga en el editor
  3. Modificarlo según necesidad
  4. Guardar como nueva consulta (con nombre actualizado)

Esto permite mantener versiones anteriores y nuevas simultáneamente.


¿Se puede exportar la biblioteca de consultas?

Las consultas se almacenan en la base de datos. Pueden exportarse como:

  • SQL dump: Backup completo
  • Archivos de texto: Una consulta por archivo
  • Documentación: Generar un listado con todas las consultas y sus propósitos

Esto permite:

  • Backup de conocimiento institucional
  • Compartir con otras instituciones
  • Migrar a nuevas instalaciones

¿Cuántas consultas pueden guardarse?

No hay límite técnico. En la práctica:

  • Revistas pequeñas: 10-15 consultas
  • Revistas medianas: 20-30 consultas
  • Editoriales con múltiples revistas: 50+ consultas

¿Se pueden categorizar las consultas?

Actualmente, la organización es por nombre. Una convención útil es usar prefijos:

RUTINA_Informe_mensual_consejo
EVAL_Distribucion_geografica_autores
TECNICA_Validar_metadatos_completos
ANALISIS_Evolucion_coautorias_2020_2025

Esto permite agrupación visual en el listbox.

Una versión futura podría implementar categorías o tags explícitos.


¿Necesito ser programador?

No. SQL de lectura es más simple que fórmulas avanzadas de Excel. Con 3-4 horas de capacitación, un editor puede construir consultas básicas. Las consultas complejas se aprenden gradualmente según necesidad.


¿Hay un límite de complejidad en las consultas?

No impuesto por gbpublisher. El único límite es el motor de base de datos (MySQL/MariaDB), que maneja consultas extremadamente complejas sin problemas para bases editoriales típicas (miles de artículos, decenas de miles de autores).


¿Puedo dañar algo si hago consultas muy pesadas?

Las consultas complejas pueden tardar más en ejecutarse, pero no dañan la base. En bases grandes, consultas mal optimizadas pueden ser lentas, pero se detienen si tardan demasiado.


¿Los resultados se actualizan en tiempo real?

Sí. Cada consulta lee el estado actual de la base de datos. Si se agrega un nuevo artículo y ejecutas la consulta nuevamente, el resultado incluirá ese artículo.


¿Puedo compartir consultas con otros editores?

Sí. Las consultas son simplemente texto SQL. Pueden:

  • Copiarse y pegarse
  • Enviarse por email
  • Guardarse en archivos compartidos
  • Versionarse en Git

Pero lo más práctico es que, si están guardadas en gbpublisher, automáticamente están disponibles para todos en el listbox.


Conclusión: conocimiento como activo institucional

El sistema de consultas guardadas transforma gbpublisher de una herramienta de producción en una plataforma de inteligencia editorial acumulativa.

Cada consulta guardada es:

  • Conocimiento explícito (no está en la cabeza de un editor)
  • Reproducible (genera los mismos resultados con los mismos datos)
  • Transferible (nuevos editores lo heredan)
  • Mejorable (se puede refinar con el tiempo)

Después de 1-2 años de uso, la biblioteca de consultas de una revista constituye un mapa del conocimiento editorial: qué información es relevante, cómo se mide, cómo evoluciona. Esto no tiene precio en términos de continuidad institucional.