La solicitud

De Angela Rivera, Directora de Atención al Cliente
Tu objetivo
Usando el CTE lines del starter (una fila por cada línea válida de un pedido confirmado, con return_id y refund_amount en NULL cuando la línea no se devolvió), devuelve una fila por year con: booked_orders (pedidos distintos), order_return_rate_pct (pedidos distintos con al menos una línea devuelta × 100 / pedidos confirmados), line_return_rate_pct (líneas devueltas × 100 / líneas) y value_return_rate_pct (refund_amount total × 100 / net total). Redondea las tres tasas a 2 y ordena por año.
- Lee de la tabla
orderspendiente - Lee de la tabla
order_itemspendiente - Muestra exactamente
yearbooked_ordersorder_return_rate_pctline_return_rate_pctvalue_return_rate_pctpendiente
Tu consulta
Cargando el editor…
Solución de referencia
| order_id | customer_id | order_date | status | channel |
|---|---|---|---|---|
| 1001 | 125 | 2023-01-01 20:51:19 | completed | web |
| 1002 | 156 | 2023-01-02 07:58:46 | completed | web |
| 1003 | 22 | 2023-01-02 10:25:27 | completed | marketplace |
| 1004 | 48 | 2023-01-02 11:21:51 | completed | marketplace |
Mote revisa tu resultado
Presiona Ejecutar. Cada fila que cumple el objetivo se vuelve una luciérnaga en tu linterna.
Lo que recibe Angela, y por qué
Tablas
Datos de la tienda Harbor & Pine, listos para consultar.
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 |
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 |
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
Una tasa es un numerador sobre un denominador
“Tasa de devolución” suena a un solo número. Son al menos tres, según entre qué divides:
- Por pedido: pedidos con al menos una línea devuelta ÷ pedidos confirmados. Lo que siente soporte: con qué frecuencia un cliente vuelve descontento.
- Por línea: líneas devueltas ÷ todas las líneas. Lo que siente el almacén: cuántos paquetes regresan.
- Por dólar: reembolsos ÷ ventas netas. Lo que siente finanzas: cuántos ingresos vuelven a salir.
Las tres son honestas. Mezclarlas en una misma diapositiva, o cambiar de una a otra de un mes a otro, no lo es.
Las tres tasas de devolución de Harbor & Pine
year orders per order per line per dollar
2023 2,972 11.68% 6.62% 6.67%
2024 3,772 10.05% 5.84% 5.89%
2025 4,409 10.00% 5.55% 5.96%
La tasa por pedido es casi el doble de las otras: un pedido tiene 2,5 líneas en promedio, así que una sola línea devuelta hace que todo el pedido cuente como “devuelto”. Y mira de 2024 a 2025: por líneas, las devoluciones bajaron; por dólares, subieron. Un gerente que quiere buenas noticias puede elegir el denominador que se las da. Una definición de KPI existe para quitarle esa elección.
Contar después de un join
El CTE lines tiene una fila por línea de pedido, así que COUNT(*) cuenta líneas, no pedidos. Para
la tasa por pedido necesitas COUNT(DISTINCT order_id), y para “pedidos con una devolución” ese mismo
conteo restringido a las líneas devueltas con FILTER (WHERE return_id IS NOT NULL).
COUNT(return_id) cuenta solo las líneas que se devolvieron, porque COUNT(column) ignora los NULL,
y SUM(refund_amount) hace lo mismo.
Cuál va en la hoja de KPI
Elige según la decisión que alimenta el número. Finanzas, que planifica ingresos, necesita reembolsos por dólar. El almacén, que planifica personal, necesita líneas. La experiencia del cliente necesita pedidos. Elige una por audiencia, escribe el denominador en el nombre (“devoluciones, % de las ventas netas”) y nunca lo cambies en silencio.
Errores comunes
- Contar filas después de un join como si fueran pedidos. Usa
COUNT(DISTINCT order_id). - Dividir entre todos los pedidos. Los pedidos cancelados y pendientes nunca se pagaron, así que no pueden devolverse; incluirlos baja la tasa sin motivo.
- Comparar una tasa por pedido con la tasa por dólar del año pasado. El salto de 6 % a 10 % es la definición, no los clientes.
¡Linterna encendida!
Practicaste: return ratedenominatorkpi definitioncount distinctfilter clause
- Resuelto
- Sin pistas
- Al primer intento
