0Pricing
Digital Marketing Academy · Lección

Unión de tablas de marketing

Sesiones, usuarios y pedidos

Unión de tablas de marketing es una lección gratuita de Digital Marketing Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Digital Marketing Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Digital Marketing Academy incluye 4 lecciones en total.

¿Por qué usar JOIN?

Las preguntas reales abarcan varias tablas. El gasto está en campaigns, los ingresos en orders y las características en users. Para calcular el ROAS o el LTV por segmento, debe combinarlas.

Los JOIN relacionan filas de dos tablas mediante una clave compartida, como user_id o campaign_id.

SELECT o.order_id, u.country
FROM orders o
JOIN users u ON o.user_id = u.user_id;

INNER JOIN

Un INNER JOIN devuelve solo las filas que coinciden en ambas tablas. Los pedidos sin un usuario correspondiente, o los usuarios sin pedidos, se descartan.

Úselo cuando solo le interesen los registros que existen en ambos lados, como los compradores.

SELECT u.user_id, u.country, SUM(o.revenue) AS revenue
FROM users u
JOIN orders o ON o.user_id = u.user_id
GROUP BY u.user_id, u.country;

LEFT JOIN

Un LEFT JOIN conserva todas las filas de la tabla izquierda, incluso cuando no hay coincidencias a la derecha. Los valores ausentes aparecen como NULL.

Así puede encontrar usuarios que nunca hicieron un pedido o sesiones que nunca generaron una conversión.

SELECT u.user_id, COALESCE(SUM(o.revenue), 0) AS revenue
FROM users u
LEFT JOIN orders o ON o.user_id = u.user_id
GROUP BY u.user_id;

Encontrar las brechas

Combine un LEFT JOIN con una comprobación de NULL para aislar las filas sin coincidencias. «¿Qué registros nunca se convirtieron en compras?» es una pregunta clásica sobre retención.

Que el lado derecho sea NULL significa que no existía ningún pedido coincidente.

SELECT u.user_id, u.signup_date
FROM users u
LEFT JOIN orders o ON o.user_id = u.user_id
WHERE o.order_id IS NULL;

Relacionar sesiones con pedidos

Relacionar las sesiones con los pedidos conecta el comportamiento con el resultado. Use user_id como clave para ver qué tráfico acabó generando compras.

Esta es la base del análisis de atribución de canales.

SELECT s.channel, SUM(o.revenue) AS revenue
FROM sessions s
JOIN orders o ON o.user_id = s.user_id
GROUP BY s.channel;

Calcular el ROAS

Para obtener el ROAS real necesita ver el gasto y los ingresos juntos. Relacione campaigns con orders mediante campaign_id y, después, divida los totales.

NULLIF evita la división entre cero cuando no hay gasto.

SELECT c.campaign_id,
       SUM(o.revenue) / NULLIF(SUM(c.spend), 0) AS roas
FROM campaigns c
LEFT JOIN orders o ON o.campaign_id = c.campaign_id
GROUP BY c.campaign_id;

Alias de tablas

Los alias (o para orders, u para users) mantienen las consultas con varias tablas breves y sin ambigüedades. Califique siempre las columnas cuando un mismo nombre exista en ambas tablas.

Unos alias claros facilitan mucho la lectura y la depuración de JOIN complejos.

SELECT c.name AS campaign, SUM(o.revenue) AS revenue
FROM campaigns c
JOIN orders o ON o.campaign_id = c.campaign_id
GROUP BY c.name;

Relacionar tres tablas

Encadene JOIN para reunir más de dos tablas. Aquí conectamos campaigns con orders y con users para segmentar los ingresos por país.

Cada JOIN añade otra condición ON que vincula la nueva tabla con el conjunto existente.

SELECT c.name, u.country, SUM(o.revenue) AS revenue
FROM campaigns c
JOIN orders o ON o.campaign_id = c.campaign_id
JOIN users u ON u.user_id = o.user_id
GROUP BY c.name, u.country;

Vigile la granularidad

Relacionar una relación de uno a muchos puede multiplicar las filas e inflar las sumas. Si una campaña tiene muchos pedidos, sumar el gasto por pedido lo contabiliza varias veces.

Agregue cada lado por separado y, después, relacione los totales para mantener las cifras correctas.

SELECT c.campaign_id, c.total_spend, r.revenue
FROM campaigns c
JOIN (
  SELECT campaign_id, SUM(revenue) AS revenue
  FROM orders GROUP BY campaign_id
) r ON r.campaign_id = c.campaign_id;

Atribución de primer contacto

Para atribuir el mérito al primer canal del que procedía un usuario, busque la primera sesión de cada usuario y, después, relaciónela con sus pedidos.

Una subconsulta aísla el primer contacto antes de relacionarlo con los ingresos.

SELECT f.channel, SUM(o.revenue) AS revenue
FROM (
  SELECT DISTINCT ON (user_id) user_id, channel
  FROM sessions ORDER BY user_id, session_date
) f
JOIN orders o ON o.user_id = f.user_id
GROUP BY f.channel;

JOIN en la práctica

Los JOIN hacen que SQL para marketing sea realmente potente. Gasto más ingresos permiten calcular el ROAS; sesiones más pedidos permiten hacer atribución; usuarios más pedidos permiten calcular el LTV por segmento.

Elija INNER cuando deban existir ambos lados y LEFT cuando quiera conservar las filas y analizar las brechas.

Comprobación rápida

Quiere mostrar todos los usuarios registrados, incluidos los que nunca hicieron un pedido. ¿Qué JOIN debe usar?

Resumen

INNER JOIN conserva las coincidencias de ambos lados; LEFT JOIN conserva todas las filas de la izquierda y revela las brechas. Los alias y las columnas calificadas mantienen limpias las consultas.

Tenga cuidado con el efecto de expansión de los JOIN de uno a muchos; agregue previamente los datos para mantener las sumas precisas. A continuación: consultas de cohortes y embudos.

Preguntas frecuentes

¿La lección «Unión de tablas de marketing» es gratis?

Sí — el texto completo de «Unión de tablas de marketing» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Digital Marketing Academy, actualiza a CoddyKit PRO. El curso de Digital Marketing Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Unión de tablas de marketing»?

Sesiones, usuarios y pedidos Practicas Digital Marketing Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Digital Marketing Academy?

No se requiere experiencia previa. Digital Marketing Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Unión de tablas de marketing»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Digital Marketing Academy?

Sí. Cada lección de Digital Marketing Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Por qué los profesionales del marketing aprenden SQL
  2. SELECT, WHERE, GROUP BY
  3. Unión de tablas de marketing
  4. Consultas de cohortes y embudos
← Volver a Digital Marketing Academy