La solicitud

De Megan Collins, Directora de Ventas
Tu objetivo
Usando los pedidos contabilizados (status 'completed' o 'refunded') de los tres años, devuelve una fila con: customers (clientes con al menos un pedido contabilizado), repeat_customers (clientes con 2 o más pedidos contabilizados), repeat_rate_pct (repeat_customers * 100 / customers, redondeado a 2) y orders_per_customer (pedidos contabilizados / customers, redondeado a 2).
- Lee de la tabla
customerspendiente - Lee de la tabla
orderspendiente - Muestra exactamente
customersrepeat_customersrepeat_rate_pctorders_per_customerpendiente
Tu consulta
Cargando el editor…
Solución de referencia
| customer_id | first_name | last_name | city | |
|---|---|---|---|---|
| 1 | Owen | Hudson | owen.hudson@icloud.com | San Francisco |
| 2 | Douglas | Mendoza | dmendoza69@gmail.com | Atlanta |
| 3 | Henry | Brooks | hbrooks@lakesidecafe.com | Los Angeles |
| 4 | Brian | Graham | bgraham@bluecedarhomes.com | Seattle |
Mote revisa tu resultado
Presiona Ejecutar. Cada fila que cumple el objetivo se vuelve una luciérnaga en tu linterna.
Lo que recibe Megan, y por qué
Tablas
Datos de la tienda Harbor & Pine, listos para consultar.
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 |
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 |
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 |
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 |
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 |
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
Dos números de lealtad
La tasa de recompra es la proporción de clientes que compraron al menos dos veces. La frecuencia de compra (pedidos por cliente) es cuántos pedidos hizo en promedio el cliente en el período. Juntas dicen si los clientes vuelven y con qué frecuencia.
Ambas son métricas de clientes, así que el primer paso siempre es el mismo: colapsar los pedidos a una fila por cliente. Todo lo demás es contar filas.
WITH per_customer AS (
SELECT customer_id, COUNT(*) AS n_orders
FROM orders
WHERE status IN ('completed', 'refunded')
GROUP BY customer_id
)
El denominador decide el número
¿Quién es “un cliente”? Este nivel usa a las personas con al menos un pedido contabilizado: 1,740. La tabla
customers tiene 2,018 filas, pero incluye registros que nunca pagaron y 18 registros duplicados. Dividir
entre 2,018 bajaría la tasa de recompra de 81.21 % a cerca de 70 % sin que nadie cambiara su comportamiento.
Escribe el denominador en el nombre o la nota al pie de la métrica.
El período importa tanto como eso. En tres años la mayoría de los clientes han tenido tiempo de volver; en un solo mes casi nadie. Una tasa de recompra solo es comparable con otra tasa de recompra medida durante el mismo lapso.
Frecuencia media y mediana
La media es 6.41 pedidos por cliente, pero el cliente mediano tiene 3. Unos pocos compradores intensivos piden constantemente: 19 clientes con 50 o más pedidos cada uno hicieron el 14.11 % de todos los pedidos contabilizados, uno de ellos 160. Los clientes empresa tienen una mediana de 6 pedidos frente a 3 de los consumidores. Si el programa de lealtad apunta a consumidores, 6.41 no describe a casi ninguno.
Errores comunes
- Contar pedidos en vez de clientes en el numerador, por ejemplo
COUNT(*) FILTER (WHERE ...)directamente sobreorders. Eso da pedidos repetidos, que es otra métrica. - Incluir pedidos cancelados. Un cliente con un pedido pagado y un intento cancelado no es un comprador recurrente.
- División entera.
SUM(n_orders) / COUNT(*)con enteros puede redondear la respuesta; multiplica por1.0primero.
Nota de entrevista
Cuando te pidan “medir la lealtad de los clientes”, nombra la tasa de recompra y la frecuencia, indica la ventana (aquí 2023 a 2025) y el denominador (clientes con un pedido pagado). Mencionar que la frecuencia media está sesgada por unas pocas cuentas grandes muestra que miraste la distribución, no solo el promedio.
¡Linterna encendida!
Practicaste: repeat ratepurchase frequencyorders per customercount filtercte
- Resuelto
- Sin pistas
- Al primer intento
