Nivel 1 · De sesiones a pedidos, con honestidad
0 de 3
La solicitud

De Jordan Reyes, Directora de Marketing
Tu objetivo
Desde web_sessions, devuelve una fila por año con: year (el año de started_at), sessions (número de sesiones), conversions (sesiones con converted = true) y conversion_rate_pct (conversions * 100 / sessions, redondeado a 2). Ordena por año ascendente.
- Lee de la tabla
web_sessionspendiente - Muestra exactamente
yearsessionsconversionsconversion_rate_pctpendiente - 3 filas, ordenadas como se pidependiente
Tu consulta
Cargando el editor…
Solución de referencia
| session_id | customer_id | started_at | device | source |
|---|---|---|---|---|
| 1 | NULL | 2023-01-01 23:02:24 | mobile | paid |
| 2 | 18 | 2023-01-01 15:07:49 | desktop | paid |
| 3 | NULL | 2023-01-01 16:55:46 | desktop | direct |
| 4 | NULL | 2023-01-01 12:43:28 | mobile | organic |
Mote revisa tu resultado
Presiona Ejecutar. Cada fila que cumple el objetivo se vuelve una luciérnaga en tu linterna.
Lo que recibe Jordan, y por qué
Tablas
Datos de la tienda Harbor & Pine, listos para consultar.
web_sessions40,000 filas · 7 columnas
session_idintegercustomer_idintegerstarted_attimestampdevicevarcharsourcevarcharpages_viewedintegerconvertedboolean
| session_id | customer_id | started_at | device | source | pages_viewed | converted |
|---|---|---|---|---|---|---|
| 1 | NULL | 2023-01-01 23:02:24 | mobile | paid | 1 | false |
| 2 | 18 | 2023-01-01 15:07:49 | desktop | paid | 1 | false |
| 3 | NULL | 2023-01-01 16:55:46 | desktop | direct | 7 | false |
| 4 | NULL | 2023-01-01 12:43:28 | mobile | organic | 3 | false |
| 5 | NULL | 2023-01-01 13:06:21 | mobile | social | 2 | false |
customers2,018 filas · 9 columnas
customer_idintegerfirst_namevarcharlast_namevarcharemailvarcharcityvarcharstatevarcharsignup_datedatesegmentvarcharreferral_sourcevarchar
| customer_id | first_name | last_name | city | state | signup_date | segment | referral_source | |
|---|---|---|---|---|---|---|---|---|
| 1 | Owen | Hudson | owen.hudson@icloud.com | San Francisco | CA | 2022-06-02 | consumer | search |
| 2 | Douglas | Mendoza | dmendoza69@gmail.com | Atlanta | GA | 2022-06-02 | consumer | NULL |
| 3 | Henry | Brooks | hbrooks@lakesidecafe.com | Los Angeles | CA | 2022-06-04 | business | NULL |
| 4 | Brian | Graham | bgraham@bluecedarhomes.com | Seattle | WA | 2022-06-06 | business | |
| 5 | Kyle | Jimenez | kjimenez27@yahoo.com | Indianapolis | IN | 2022-06-07 | consumer | NULL |
products120 filas · 8 columnas
product_idintegernamevarcharcategoryvarcharsubcategoryvarcharunit_pricedecimalunit_costdecimallaunched_ondateis_activeboolean
| product_id | name | category | subcategory | unit_price | unit_cost | launched_on | is_active |
|---|---|---|---|---|---|---|---|
| 101 | Vale Velvet Loveseat | Furniture | Sofas | 1659.00 | NULL | 2023-09-11 | true |
| 102 | Alder Oak Coffee Table | Furniture | Tables | 919.00 | 503.50 | 2024-05-16 | true |
| 103 | Orchard Rattan Dining Chair | Furniture | Chairs | 789.00 | 429.87 | 2023-05-27 | true |
| 104 | Upland Oak Bookcase | Furniture | Storage | 429.00 | 214.70 | 2022-12-20 | true |
| 105 | Avery Leather Bed Frame | Furniture | Beds | 449.00 | 232.70 | 2021-08-31 | true |
orders12,000 filas · 7 columnas
order_idintegercustomer_idintegerorder_datetimestampstatusvarcharchannelvarcharshipping_feedecimalcoupon_codevarchar
| order_id | customer_id | order_date | status | channel | shipping_fee | coupon_code |
|---|---|---|---|---|---|---|
| 1001 | 125 | 2023-01-01 20:51:19 | completed | web | 0.00 | NULL |
| 1002 | 156 | 2023-01-02 07:58:46 | completed | web | 0.00 | NULL |
| 1003 | 22 | 2023-01-02 10:25:27 | completed | marketplace | 4.99 | WELCOME10 |
| 1004 | 48 | 2023-01-02 11:21:51 | completed | marketplace | 4.99 | WELCOME10 |
| 1005 | 82 | 2023-01-02 11:43:36 | completed | web | 0.00 | WELCOME10 |
order_items30,338 filas · 6 columnas
order_item_idintegerorder_idintegerproduct_idintegerquantityintegerunit_pricedecimaldiscount_pctdecimal
| order_item_id | order_id | product_id | quantity | unit_price | discount_pct |
|---|---|---|---|---|---|
| 1 | 1001 | 121 | 9 | 31.99 | 0.00 |
| 2 | 1001 | 154 | 3 | 11.99 | 0.00 |
| 3 | 1002 | 154 | 4 | 11.99 | 0.00 |
| 4 | 1002 | 194 | 1 | 149.00 | 0.00 |
| 5 | 1002 | 193 | 2 | 19.99 | 0.00 |
returns1,673 filas · 5 columnas
return_idintegerorder_item_idintegerreturned_ondatereasonvarcharrefund_amountdecimal
| return_id | order_item_id | returned_on | reason | refund_amount |
|---|---|---|---|---|
| 1 | 14 | 2023-01-10 | damaged | 83.69 |
| 2 | 42 | 2023-01-10 | wrong_item | 19.99 |
| 3 | 105 | 2023-01-14 | wrong_item | 10.99 |
| 4 | 24 | 2023-01-16 | changed_mind | 26.99 |
| 5 | 126 | 2023-01-16 | late | 20.99 |
employees60 filas · 8 columnas
employee_idintegerfirst_namevarcharlast_namevarchardepartmentvarchartitlevarcharmanager_idintegerhire_datedatesalaryinteger
| employee_id | first_name | last_name | department | title | manager_id | hire_date | salary |
|---|---|---|---|---|---|---|---|
| 1 | Catherine | Hale | Executive | Chief Executive Officer | NULL | 2016-03-01 | 285000 |
| 2 | Robert | Kim | Executive | Chief Operating Officer | 1 | 2017-01-09 | 235000 |
| 3 | Megan | Collins | Sales | Head of Sales | 1 | 2018-04-16 | 172000 |
| 4 | Chloe | Gutierrez | Sales | Account Executive | 3 | 2020-01-21 | 72000 |
| 5 | Frank | Bell | Sales | Account Executive | 3 | 2023-05-21 | 73000 |
marketing_spend3,276 filas · 3 columnas
spend_datedatechannelvarcharamountdecimal
| spend_date | channel | amount |
|---|---|---|
| 2023-01-01 | paid | 492.99 |
| 2023-01-01 | 37.38 | |
| 2023-01-01 | social | 200.53 |
| 2023-01-02 | paid | 709.13 |
| 2023-01-02 | 64.13 |
La lección
Qué es una tasa de conversión
Una tasa de conversión es la proporción de alguna unidad que hizo lo que querías. En un embudo web la unidad suele ser la sesión: una visita, desde que llega hasta que se va. La tasa es
converted sessions * 100.0 / all sessions
Los dos conteos salen de web_sessions, en el mismo año y con los mismos filtros. Eso es lo que hace
que el número signifique algo: cada sesión del denominador tenía la oportunidad de estar en el
numerador.
De dónde salió el 27%
El número del ticket divide los 4,409 pedidos registrados en 2025 entre las 16,225 sesiones web. Parece una tasa de conversión y no lo es:
- Los pedidos llegan por tres canales: web, app y marketplace. En 2025 solo 1,805 pedidos registrados se hicieron en la web. Quienes compran en la app y en el marketplace nunca crean una sesión web.
web_sessionsno tieneorder_id. Es un conjunto de datos de embudo aparte, y tampoco cubre todos los pedidos web: 2025 tiene 500 sesiones convertidas frente a esos 1,805 pedidos web.- Un mismo cliente puede visitar cinco veces y comprar una. Los pedidos y las sesiones cuentan cosas distintas.
Dividir un conteo de una tabla entre un conteo de otra solo funciona cuando el numerador es un subconjunto del denominador. Aquí no lo es, así que el resultado no significa nada, por muy preciso que parezca.
¿Sesión, visitante o pedido?
El mismo embudo da tasas distintas según la unidad:
- Por sesión: 500 / 16,225 = 3.08%. Es la métrica web estándar.
- Por comprador: las 500 sesiones convertidas pertenecen a 431 clientes distintos; un cliente que compra dos veces cuenta una.
- Por pedido: necesita pedidos vinculados a sesiones, que estos datos no tienen.
Ninguna es incorrecta. Lo incorrecto es mezclarlas. Un informe que dice “tasa de conversión” sin la unidad invita al error del 27%.
Leer la tendencia
2.99% en 2023, 2.86% en 2024, 3.08% en 2025. Las sesiones crecieron cada año, así que una tasa plana sigue significando más conversiones: 317, 376 y luego 500. Cuando alguien pregunte si la conversión “mejoró”, muestra la tasa y los conteos juntos.
Errores comunes
- Dividir pedidos entre sesiones. Tablas distintas, unidades distintas, sin vínculo entre ellas.
- División entera.
COUNT(*) FILTER (...) * 100 / COUNT(*)con enteros redondea hacia abajo a porcentajes enteros. Usa100.0. - Descartar las sesiones anónimas. Son visitas reales. Quitarlas hace que todas las tasas se vean mejor.
¡Linterna encendida!
Practicaste: conversion ratedenominatorscount filterfunnel
- Resuelto
- Sin pistas
- Al primer intento
