Guía práctica

SQL suficiente para hacer preguntas útiles.

No necesitas dominar bases de datos. Empieza leyendo filas, después filtra, agrupa y finalmente cruza archivos.

1. SELECT: elegir datos

Al abrir un archivo, OliMat crea la tabla data.

-- Primeras 100 filas
SELECT * FROM data LIMIT 100;

-- Solo algunas columnas
SELECT fecha, especie, captura_kg
FROM data;
Consejo: usa el explorador izquierdo para copiar nombres exactos de tablas y columnas.

2. Convertir texto a fecha y filtrar un rango

TRY_CAST devuelve nulo si un valor no puede convertirse, evitando que una fecha mal escrita detenga toda la consulta.

SELECT *, TRY_CAST(fecha_texto AS DATE) AS fecha_ok
FROM data
WHERE TRY_CAST(fecha_texto AS DATE)
  BETWEEN DATE '2025-01-01' AND DATE '2025-12-31';

Para comparar con una fecha de otra tabla:

SELECT a.*, b.fecha_cierre
FROM operaciones a
JOIN calendario b
  ON TRY_CAST(a.fecha_texto AS DATE) = b.fecha_cierre;

3. Resumir con GROUP BY

SELECT especie,
       COUNT(*) AS operaciones,
       SUM(captura_kg) AS captura_total,
       AVG(temperatura_mar_c) AS temperatura_media
FROM data
GROUP BY especie
ORDER BY captura_total DESC;

4. Cruzar archivos con JOIN

Abre el primer archivo y usa Agregar archivo como tabla para el segundo.

SELECT c.fecha, c.especie_id, e.nombre_especie, c.captura_kg
FROM capturas c
LEFT JOIN especies e
  ON c.especie_id = e.especie_id;
Si aparecen más filas de las esperadas: revisa si la clave se repite en la tabla derecha. Un JOIN muchos-a-muchos multiplica coincidencias.

5. Asociar la medición temporal más cercana

ASOF JOIN es útil para capturas y observaciones oceanográficas.

SELECT c.*, o.temperatura, o.clorofila
FROM capturas c
ASOF LEFT JOIN oceanografia o
  ON c.fecha >= o.fecha
 AND c.estacion_id = o.estacion_id;

6. Funciones que dan mucho valor

ObjetivoFunción DuckDB
Conversión seguraTRY_CAST(valor AS DOUBLE)
Valores únicos aproximadosAPPROX_COUNT_DISTINCT(campo)
Mediana y percentilesQUANTILE_CONT(valor, 0.5)
CorrelaciónCORR(x, y)
Muestra aleatoriaUSING SAMPLE 10000 ROWS
Buscar textocampo ILIKE '%pota%'

7. Si la consulta falla

La aplicación no debería cerrarse: muestra el error de DuckDB y conserva el editor para que corrijas la consulta. Puedes cancelar operaciones pesadas y usar Plan para inspeccionar la ejecución.

Documentación oficial de DuckDB ↗