1. Faro

Nivel 4 · Lo que cuestan los cupones

La solicitud

De Jordan Reyes, Director de Marketing

“Finanzas quiere recortar cupones en 2026. Antes de que lo hagan, dime qué nos costó realmente cada código en 2025 y cuál es la línea más grande.”

Tu objetivo

Para los pedidos contabilizados de 2025 (status IN ('completed', 'refunded'), quantity > 0, order_date >= '2025-01-01' AND order_date < '2026-01-01') que usaron cupón (coupon_code IS NOT NULL), devuelve una fila por coupon_code con orders (pedidos distintos), gross_sales, discount y share_of_discounts_pct (el descuento del código × 100 / el descuento de todos los cupones). Redondea el dinero y la participación a 2 decimales. Ordena por discount descendente y luego por coupon_code.

  • Lee de la tabla orderspendiente
  • Lee de la tabla order_itemspendiente
  • Muestra exactamente coupon_code orders gross_sales discount share_of_discounts_pctpendiente

Tu consulta

SQL

Cargando el editor…

    ResultadoVista previa de orders · presiona Ejecutar para ver el tuyo
    Vista previa de orders
    order_idcustomer_idorder_datestatuschannel
    10011252023-01-01 20:51:19completedweb
    10021562023-01-02 07:58:46completedweb
    1003222023-01-02 10:25:27completedmarketplace
    1004482023-01-02 11:21:51completedmarketplace

    Mote revisa tu resultado

    Presiona Ejecutar. Cada fila que cumple el objetivo se vuelve una luciérnaga en tu linterna.

    Tablas

    Datos de la tienda Harbor & Pine, listos para consultar.

    orders12,000 filas · 7 columnas
    • order_idinteger
    • customer_idinteger
    • order_datetimestamp
    • statusvarchar
    • channelvarchar
    • shipping_feedecimal
    • coupon_codevarchar
    Primeras 5 filas de orders
    order_idcustomer_idorder_datestatuschannelshipping_feecoupon_code
    10011252023-01-01 20:51:19completedweb0.00NULL
    10021562023-01-02 07:58:46completedweb0.00NULL
    1003222023-01-02 10:25:27completedmarketplace4.99WELCOME10
    1004482023-01-02 11:21:51completedmarketplace4.99WELCOME10
    1005822023-01-02 11:43:36completedweb0.00WELCOME10
    order_items30,338 filas · 6 columnas
    • order_item_idinteger
    • order_idinteger
    • product_idinteger
    • quantityinteger
    • unit_pricedecimal
    • discount_pctdecimal
    Primeras 5 filas de order_items
    order_item_idorder_idproduct_idquantityunit_pricediscount_pct
    11001121931.990.00
    21001154311.990.00
    31002154411.990.00
    410021941149.000.00
    51002193219.990.00
    customers2,018 filas · 9 columnas
    • customer_idinteger
    • first_namevarchar
    • last_namevarchar
    • emailvarchar
    • cityvarchar
    • statevarchar
    • signup_datedate
    • segmentvarchar
    • referral_sourcevarchar
    Primeras 5 filas de customers
    customer_idfirst_namelast_nameemailcitystatesignup_datesegmentreferral_source
    1OwenHudsonowen.hudson@icloud.comSan FranciscoCA2022-06-02consumersearch
    2DouglasMendozadmendoza69@gmail.comAtlantaGA2022-06-02consumerNULL
    3HenryBrookshbrooks@lakesidecafe.comLos AngelesCA2022-06-04businessNULL
    4BrianGrahambgraham@bluecedarhomes.comSeattleWA2022-06-06businesspinterest
    5KyleJimenezkjimenez27@yahoo.comIndianapolisIN2022-06-07consumerNULL
    products120 filas · 8 columnas
    • product_idinteger
    • namevarchar
    • categoryvarchar
    • subcategoryvarchar
    • unit_pricedecimal
    • unit_costdecimal
    • launched_ondate
    • is_activeboolean
    Primeras 5 filas de products
    product_idnamecategorysubcategoryunit_priceunit_costlaunched_onis_active
    101Vale Velvet LoveseatFurnitureSofas1659.00NULL2023-09-11true
    102Alder Oak Coffee TableFurnitureTables919.00503.502024-05-16true
    103Orchard Rattan Dining ChairFurnitureChairs789.00429.872023-05-27true
    104Upland Oak BookcaseFurnitureStorage429.00214.702022-12-20true
    105Avery Leather Bed FrameFurnitureBeds449.00232.702021-08-31true
    returns1,673 filas · 5 columnas
    • return_idinteger
    • order_item_idinteger
    • returned_ondate
    • reasonvarchar
    • refund_amountdecimal
    Primeras 5 filas de returns
    return_idorder_item_idreturned_onreasonrefund_amount
    1142023-01-10damaged83.69
    2422023-01-10wrong_item19.99
    31052023-01-14wrong_item10.99
    4242023-01-16changed_mind26.99
    51262023-01-16late20.99
    employees60 filas · 8 columnas
    • employee_idinteger
    • first_namevarchar
    • last_namevarchar
    • departmentvarchar
    • titlevarchar
    • manager_idinteger
    • hire_datedate
    • salaryinteger
    Primeras 5 filas de employees
    employee_idfirst_namelast_namedepartmenttitlemanager_idhire_datesalary
    1CatherineHaleExecutiveChief Executive OfficerNULL2016-03-01285000
    2RobertKimExecutiveChief Operating Officer12017-01-09235000
    3MeganCollinsSalesHead of Sales12018-04-16172000
    4ChloeGutierrezSalesAccount Executive32020-01-2172000
    5FrankBellSalesAccount Executive32023-05-2173000
    web_sessions40,000 filas · 7 columnas
    • session_idinteger
    • customer_idinteger
    • started_attimestamp
    • devicevarchar
    • sourcevarchar
    • pages_viewedinteger
    • convertedboolean
    Primeras 5 filas de web_sessions
    session_idcustomer_idstarted_atdevicesourcepages_viewedconverted
    1NULL2023-01-01 23:02:24mobilepaid1false
    2182023-01-01 15:07:49desktoppaid1false
    3NULL2023-01-01 16:55:46desktopdirect7false
    4NULL2023-01-01 12:43:28mobileorganic3false
    5NULL2023-01-01 13:06:21mobilesocial2false
    marketing_spend3,276 filas · 3 columnas
    • spend_datedate
    • channelvarchar
    • amountdecimal
    Primeras 5 filas de marketing_spend
    spend_datechannelamount
    2023-01-01paid492.99
    2023-01-01email37.38
    2023-01-01social200.53
    2023-01-02paid709.13
    2023-01-02email64.13

    La lección

    La tasa no es el costo

    Cada cupón de Harbor & Pine tiene una tasa fija: BFCM25 descuenta 25 %, WELCOME10 10 %. La tasa te dice qué tan generoso es un código. No te dice cuánto costó, porque el costo es la tasa × las ventas sobre las que se usó. Un código es caro cuando es generoso y popular.

    quantity * unit_price * discount_pct / 100   -- discount dollars on one line

    Sumado por código, eso es el costo en dólares. Marketing compara códigos por tasa; finanzas los compara por dólares. Este nivel le da a cada uno su número.

    Participación en el total con una ventana

    Para decir “BFCM25 es el 30 % del costo de todos los cupones”, cada fila necesita el total de todos los códigos. Una función de ventana sobre el resultado agrupado lo da sin una segunda consulta:

    SUM(SUM(discount_expr)) OVER ()

    El SUM interno es el descuento del grupo; el SUM ... OVER () externo suma esas sumas de grupo en todas las filas. Divide la primera entre la segunda, multiplica por 100.0 y redondea una sola vez.

    Lo que muestra 2025

    BFCM25 costó $14,367.33 en 112 pedidos durante un solo fin de semana largo. WELCOME10 costó $10,126.31 en 198 pedidos. SPRING15, HOLIDAY20 y SUMMER15 costaron cada uno entre $7,200 y $8,900. En total, los cupones restaron $47,953.28 a las ventas brutas de 2025, cerca del 2 % de $2.41M.

    FREESHIP muestra 79 pedidos y $0 de descuento. Su costo es real, pero es el cargo de envío que la tienda no cobró, así que vive en orders.shipping_fee. Un informe de cupones que solo lee discount_pct se lo pierde; dilo en la nota al pie.

    El costo es la mitad de la pregunta

    La otra mitad es lo que compró el cupón. WELCOME10 atrae clientes nuevos, cuyos pedidos posteriores no llevan descuento. BFCM25 quizá descuenta sobre todo pedidos que la gente habría hecho de todos modos. El costo por código es donde empieza esa conversación, y el valor de vida del cliente del capítulo 2 es donde continúa.

    Errores comunes

    • Ordenar por tasa. El código de 25 % no es automáticamente el más costoso.
    • Olvidar el envío gratis. Una columna de descuento solo contiene descuentos de precio.
    • Unir las devoluciones primero. Los descuentos son un número del lado de las ventas; deja los reembolsos fuera de esta consulta.

    Nota de entrevista

    “¿Cómo medirías si una promoción valió la pena?” Empieza por su costo en dólares, luego los pedidos incrementales y los clientes que adquirió. El costo solo nunca lo decide.

    Elige qué puede ejecutarse en este sitio. Puedes cambiarlo cuando quieras desde "Configurar cookies", al pie de cada página.