Generador de consultas SQL que prueba la consulta antes de dártela
Sabes qué dato necesitas sacar de la base de datos, pero escribir los JOIN, los GROUP BY y las fechas te lleva más de lo que debería. Con este prompt, tu agente de todo.is escribe la consulta para tu motor (PostgreSQL, MySQL, SQL Server, BigQuery…), la comenta, la ejecuta sobre datos de ejemplo y te dice qué ha supuesto.
El prompt
- Escribe una consulta SQL para [TIPO DE BASE DE DATOS] que responda a esto: [TU PREGUNTA]. Mis tablas: [ESTRUCTURA DE LAS TABLAS]. Añade comentarios que expliquen cada parte, usa alias claros y evita cualquier cosa que vaya lenta con [TAMAÑO DE LAS TABLAS]. Crea un pequeño conjunto de datos de ejemplo con la misma estructura, ejecuta la consulta en tu espacio de trabajo y enséñame el resultado para comprobar que funciona. Si algo de mi pregunta es ambiguo (por ejemplo, cómo contar las devoluciones), dime qué has supuesto.
Qué cambiar
- [TIPO DE BASE DE DATOS]: Por ejemplo «PostgreSQL 15», «MySQL 8», «SQL Server», «SQLite», «BigQuery» o «Snowflake».
- [TU PREGUNTA]: Con tus palabras, por ejemplo «los 10 clientes con más facturación de los últimos 90 días, con su número de pedidos».
- [ESTRUCTURA DE LAS TABLAS]: Pega los CREATE TABLE o enumera tablas y columnas, por ejemplo «pedidos(id, cliente_id, total, estado, creado_en)». También puedes adjuntar el esquema.
- [TAMAÑO DE LAS TABLAS]: Número aproximado de filas, por ejemplo «pedidos tiene 20 millones de filas», o «pequeñas, menos de 100.000 filas».
Ejemplo de resultado
- Los 10 clientes con más facturación en los últimos 90 días (PostgreSQL)
- -- Pedidos pagados de los últimos 90 días, restando devoluciones
- WITH recientes AS (
- SELECT p.cliente_id,
- p.id AS pedido_id,
- p.total - COALESCE(d.importe, 0) AS total_neto
- FROM pedidos p
- LEFT JOIN devoluciones d ON d.pedido_id = p.id -- conserva pedidos sin devolución
- WHERE p.estado = 'pagado'
- AND p.creado_en >= now() - interval '90 days'
- )
- SELECT c.id,
- c.nombre,
- COUNT(*) AS num_pedidos,
- SUM(r.total_neto) AS facturacion
- FROM recientes r
- JOIN clientes c ON c.id = r.cliente_id
- GROUP BY c.id, c.nombre
- ORDER BY facturacion DESC
- LIMIT 10;
- Qué hace cada parte
- • WITH recientes AS (...) reúne primero los pedidos que te interesan, para que la consulta principal se lea fácil
- • LEFT JOIN devoluciones mantiene los pedidos que nunca se devolvieron; COALESCE convierte su devolución inexistente en 0
- • GROUP BY c.id, c.nombre da una fila por cliente; agrupar por id evita mezclar dos clientes que se llamen igual
- • ORDER BY facturacion DESC LIMIT 10 se queda con los 10 primeros
- Prueba (500 pedidos inventados, 60 clientes)
- • 1. Bicicletas Norte: 14 pedidos, 8.920,00
- • 2. Estudio Enebro: 9 pedidos, 7.410,50
- • 3. Aliso y Pinzón: 11 pedidos, 6.985,00
- Supuestos
- • «Facturación» son los pedidos pagados menos devoluciones; se excluyen los pendientes y cancelados
- • Como mucho una devolución por pedido. Si puede haber varias, hay que sumarlas primero por pedido
- Rendimiento con 20 millones de filas
- • Un índice en pedidos (estado, creado_en) permite que el WHERE se salte las filas antiguas
- • Ejecuta EXPLAIN ANALYZE antes de usarla en un dashboard
Cómo hacerlo con todo.is
- Copia el prompt y rellena el tipo de base de datos, tu pregunta y tus tablas.
- Pega tus CREATE TABLE, o adjunta una exportación del esquema, en la pantalla Hoy de todo.is.
- Tu agente escribe la consulta, la ejecuta con datos de ejemplo realistas y te enseña la tabla de resultados.
- Copia la consulta (o descarga el archivo .sql) y ejecútala en tu propia herramienta.
- Si te da un error o una cifra rara, envíaselo y la corrige.
Consejos para un mejor resultado
- Indica siempre tu motor de base de datos. Las funciones de fecha, LIMIT frente a TOP y el tratamiento de textos cambian entre PostgreSQL, MySQL, SQL Server y BigQuery.
- Comparte la estructura, no los datos. Con los nombres y tipos de columna basta para escribir una consulta correcta.
- Define en la pregunta las palabras delicadas como «cliente activo» o «facturación»: la mayoría de cifras erróneas vienen de definiciones poco claras.
- Prueba las consultas nuevas con un usuario de solo lectura o en una copia de la base de datos antes de lanzar UPDATE o DELETE.
- Si nombras tablas y columnas en español, evita tildes y eñes en los identificadores: te ahorrarás problemas de comillas y codificación.
generador de consultas SQL: preguntas frecuentes
- ¿Se conecta a mi base de datos y ejecuta la consulta? No. No inicia sesión en tu base de datos. Ejecuta la consulta sobre datos de ejemplo en su propio espacio de trabajo y tú ejecutas la versión final en tu herramienta.
- ¿Qué diferencia hay entre WHERE y HAVING? WHERE filtra filas antes de agrupar y HAVING filtra grupos después de agregar. Por ejemplo, HAVING COUNT(*) > 5 deja solo los clientes con más de 5 pedidos.
- ¿Puede explicar o acelerar una consulta lenta que ya tengo? Sí. Pega la consulta y, si puedes, la salida de EXPLAIN. Te señalará índices que faltan, subconsultas innecesarias o funciones sobre columnas indexadas, y la reescribirá.
- ¿Es seguro pegar mi esquema? Tu esquema se queda en tu propio espacio de trabajo del agente y solo lo usa tu agente. No incluyas datos reales ni credenciales: no hacen falta.
JavaScript is required to use the todo.is app.