← Back to Projects

E-commerce Business Optimization Analysis (SQL)

A 10-section analytical deep dive into the BigQuery thelook_ecommerce dataset – examining products, brands, categories, long-term trends, seasonal patterns, customers, and distribution centers across revenue, profit, margin, return rate, and lost revenue metrics to produce actionable business recommendations.


Introduction

Project Objective

This project analyzes a large-scale e-commerce dataset to identify revenue drivers, profit optimization opportunities, return risk patterns, and operational inefficiencies – the same kinds of questions a data analyst would be asked to investigate at a real retail or e-commerce company. The framing is straightforward: if I were hired as a data analyst at this company, what would I investigate first, what would I find, and what would I recommend? Every analysis section ends with concrete, actionable business recommendations – not just charts and tables. The goal is to demonstrate that data analysis is only valuable when it translates into decisions.

Dataset Overview

The dataset used is thelook_ecommerce, a public dataset hosted in Google BigQuery (bigquery-public-data.thelook_ecommerce). It simulates a mid-size e-commerce retailer selling apparel, accessories, and outerwear – structurally analogous to real retail datasets with order statuses (Complete, Returned, Cancelled, Shipped, Processing), product costs, sale prices, customer demographics, and distribution center assignments.

Dataset at a glance:

  • Scale: ~181,000 order items, ~80,000 unique customers, ~29,000 unique products across ~2,700 brands and 26 product categories
  • Tables used: order_items, orders, products, users, distribution_centers, inventory_items
  • Time range: 2019 through early 2026 (BigQuery continuously generates synthetic data for this dataset, so the date range extends beyond the original creation date)
  • Domain: Simulated e-commerce retailer – apparel, accessories, and outerwear

Note: Because this is a synthetic/simulated dataset, some product prices contain anomalies (e.g., socks listed at $903) that would not exist in production data. These anomalies are left in the analysis as-is since the purpose is to demonstrate analytical methodology rather than clean a specific company's data.

SQL Techniques Demonstrated

The queries in this project go well beyond basic SELECT statements. Each analysis builds complex, multi-layered queries designed to extract derived metrics that do not exist in the raw data – profit margins, return rates, revenue shares, and cross-metric rankings all computed within a single query execution. The following techniques are used consistently throughout:

  • Common Table Expressions (CTEs): Multi-layered CTEs (first_layer, second_layer, third_layer) used throughout to build complex metrics incrementally – separating raw aggregation, derived ratio calculations, and ranking into clean logical stages
  • Window Functions: RANK(), SUM() OVER(), ROUND() with window clauses for calculating revenue shares, profit shares, and cross-metric rankings within a single query
  • Conditional Aggregation: Extensive use of CASE WHEN inside SUM() and COUNT() to calculate status-specific metrics (revenue from completed orders only, return counts, cancellation counts, en-route counts) from a single pass through the data
  • Multi-table JOINs: Consistently joining order_items → orders → products (and users, distribution_centers, inventory_items where relevant) to build unified analytical views
  • NULLIF for safe division: Used throughout to prevent division-by-zero errors in ratio calculations (profit margin, return rate, completion rate, etc.)
  • DATE functions: DATE_TRUNC, EXTRACT(MONTH FROM ...), DATE_DIFF for time-series aggregation and customer lifetime calculations
  • Subquery filtering: Third-layer CTEs with WHERE clauses filtering on rank thresholds (e.g., WHERE revenue_rank <= 50) to create contextually meaningful "bottom" analyses rather than simply reversing sort order

Every query is written to be readable and self-documenting – clear aliasing, logical CTE naming, and consistent formatting throughout.

Analysis Structure

The analysis is structured across ten analytical dimensions: Top Products, Bottom Products, Top Brands, Bottom Brands, Top Categories, Bottom Categories, Long Term Trends, Seasonal Trends, Customers, and Distribution Centers. Each section examines performance from multiple angles – revenue, profit, profit margin, unit volume, return rate, units returned, lost revenue, and lost profit – providing a 360-degree view rather than a single-metric snapshot.

"Top" and "Bottom" analyses are paired intentionally. Understanding what performs well is only half the picture – identifying underperformers, high-risk products, and margin-compressing segments is equally valuable for business optimization. A company that only monitors its best sellers will miss the products, brands, and categories that are quietly eroding profitability through returns, cancellations, and thin margins.

Every section concludes with an Analytical Insights & Business Recommendations block that translates data findings into specific, prioritized actions a business could take.

Business Context

E-commerce businesses generate massive transactional datasets but often lack the analytical infrastructure to extract cross-dimensional insights – most reporting stops at top-line revenue. This project goes deeper: it examines where profit is actually generated vs. where revenue is highest (they often diverge), which products and brands are net-negative after accounting for returns and cancellations, and what operational patterns (distribution center inventory imbalances, seasonal demand shifts) are costing the business money.

SQL is the foundational tool for this kind of work because the questions require joining multiple tables, filtering on complex conditions, and computing derived metrics that don't exist in raw data – exactly the workflow a data analyst performs daily. The retail and e-commerce industry context is important here: return rates of 20–30% are common in online apparel retail. The ~28% average return rate observed in this dataset is realistic and aligns with industry benchmarks, which validates the analytical approach.

Key Metrics Tracked

The following metrics are computed and referenced throughout every section of the analysis. Understanding these definitions is essential for interpreting the tables and recommendations.

  • Revenue: Sum of sale prices from completed orders only
  • Profit: Revenue minus product cost for completed orders
  • Profit Margin: Profit / Revenue – measures how much of each revenue dollar is retained
  • Return Rate: Returned items / (Completed + Returned items) – measures post-delivery dissatisfaction
  • Completion Rate: Completed items / (Total items − Cancelled items) – measures fulfillment success
  • Cancellation Rate: Cancelled items / Total items ordered
  • En Route Rate: Shipped + Processing items / (Total − Cancelled − Returned) – measures what share of surviving orders are still in transit
  • Lost Revenue / Lost Profit: Revenue and profit that would have been earned if returned and cancelled orders had completed – quantifies the business cost of failed orders
  • Revenue Share / Profit Share / Unit Orders Share: Each entity's contribution to total business volume – enables apples-to-apples comparison across different scales
Top Products

Top products by Revenue

WITH first_layer AS (
SELECT
  p.name AS product_name,
  p.brand AS product_brand,
  p.category AS product_category,
  ROUND(AVG(oi.sale_price), 2) AS avg_product_sale_price,
  ROUND(AVG(p.cost), 2) AS avg_product_cost,
ROUND(SUM(CASE WHEN oi.status = 'Complete' THEN oi.sale_price ELSE 0 END), 2) AS
revenue,
ROUND(SUM(CASE WHEN oi.status = 'Complete' THEN (oi.sale_price - p.cost) ELSE 0
END), 2) AS profit,
COUNT(*) AS unit_orders_placed,
SUM(CASE WHEN oi.status = 'Complete' THEN 1 ELSE 0 END) AS units_completed,
SUM(CASE WHEN oi.status = 'Returned' THEN 1 ELSE 0 END) AS units_returned,
SUM(CASE WHEN oi.status = 'Cancelled' THEN 1 ELSE 0 END) AS units_cancelled,
SUM(CASE WHEN oi.status IN ('Shipped', 'Processing') THEN 1 ELSE 0 END) AS units_en_route,
ROUND(SUM(CASE WHEN oi.status IN ('Returned', 'Cancelled') THEN oi.sale_price ELSE 0 END), 2) AS lost_revenue,
ROUND(SUM(CASE WHEN oi.status IN ('Returned', 'Cancelled') THEN (oi.sale_price - p.cost) ELSE 0 END), 2) AS lost_profit
FROM `bigquery-public-data.thelook_ecommerce.order_items` AS oi
JOIN `bigquery-public-data.thelook_ecommerce.orders` AS o
ON oi.order_id = o.order_id
JOIN `bigquery-public-data.thelook_ecommerce.products` AS p
ON oi.product_id = p.id
GROUP BY product_name, product_brand, product_category
),
second_layer AS (
SELECT
  *,
  ROUND((profit / NULLIF(revenue, 0)), 4) AS profit_margin,
  ROUND(units_returned / NULLIF(units_completed + units_returned, 0), 4) AS return_rate,
  ROUND(units_completed / NULLIF(unit_orders_placed - units_cancelled, 0), 4) AS completion_rate,
  ROUND(units_cancelled / NULLIF(unit_orders_placed, 0), 4) AS cancellation_rate,
  ROUND(units_en_route / NULLIF(unit_orders_placed - (units_cancelled + units_returned), 0), 4) AS en_route_rate,
  ROUND(revenue / SUM(revenue) OVER(), 7) AS revenue_share,
  ROUND(profit / SUM(profit) OVER(), 7) AS profit_share,
  ROUND(unit_orders_placed / SUM(unit_orders_placed) OVER(), 7) AS unit_orders_placed_share
FROM first_layer
)
SELECT
  *,
  RANK() OVER(ORDER BY avg_product_sale_price DESC) AS avg_product_sale_price_rank,
  RANK() OVER(ORDER BY avg_product_cost DESC) AS avg_product_cost_rank,
  RANK() OVER(ORDER BY revenue DESC) AS revenue_rank,
  RANK() OVER(ORDER BY profit DESC) AS profit_rank,
  RANK() OVER(ORDER BY unit_orders_placed DESC) AS unit_orders_placed_rank,
  RANK() OVER(ORDER BY units_completed DESC) AS units_completed_rank,
  RANK() OVER(ORDER BY units_returned DESC) AS units_returned_rank,
  RANK() OVER(ORDER BY units_cancelled DESC) AS units_cancelled_rank,
  RANK() OVER(ORDER BY units_en_route DESC) AS units_en_route_rank,
  RANK() OVER(ORDER BY lost_revenue DESC) AS lost_revenue_rank,
  RANK() OVER(ORDER BY lost_profit DESC) AS lost_profit_rank,
  RANK() OVER(ORDER BY profit_margin DESC) AS profit_margin_rank,
  RANK() OVER(ORDER BY return_rate DESC) AS return_rate_rank,
  RANK() OVER(ORDER BY completion_rate DESC) AS completion_rate_rank,
  RANK() OVER(ORDER BY cancellation_rate DESC) AS cancellation_rate_rank,
  RANK() OVER(ORDER BY en_route_rate DESC) AS en_route_rate_rank
FROM second_layer
ORDER BY
  revenue_rank ASC
LIMIT 15;
product_name product_brand product_category avg_product_sale_price avg_product_cost revenue profit unit_orders_placed units_completed units_returned units_cancelled units_en_route lost_revenue lost_profit profit_margin return_rate completion_rate cancellation_rate en_route_rate revenue_share profit_share unit_orders_placed_share avg_product_sale_price_rank avg_product_cost_rank revenue_rank profit_rank unit_orders_placed_rank units_completed_rank units_returned_rank units_cancelled_rank units_en_route_rank lost_revenue_rank lost_profit_rank profit_margin_rank return_rate_rank completion_rate_rank cancellation_rate_rank en_route_rate_rank
ASCIS Cushion Low Socks (Pack of 3)ASICSActive903.0373.843612.02116.63114016903.0529.160.5860.00.40.09090.60.0013380.00151276.07e-05528111161776134637029139815514237191346374821687216953
The North Face Women's S-XL Oso JacketThe North FaceOuterwear & Coats903.0378.363612.02098.571041141806.01049.290.5810.20.44440.10.50.0013380.00149985.52e-05525121962776397870296105222442091263764921636619501
Spyder Women's Jesst In Time JacketSpyderOuterwear & Coats650.0295.753250.01771.251054012600.01417.00.5450.44440.50.00.16670.00120390.00126595.52e-055250341962251301745823197778121826432691745827059
Bergama Natural Raccoon Hooded Stroller - - MulticolorBergamaOuterwear & Coats749.99306.752999.961772.98104105749.99443.240.5910.20.40.00.55560.00111130.00126715.52e-054043431962776397817458302626722432791263774821745819270
Woolrich Arctic Parka DFWoolrichOuterwear & Coats990.0478.172970.01535.491232162970.01535.490.5170.40.27270.08330.66670.00110020.00109746.62e-05365669423588447029139844107358312142841714412990
Joseph Abboud Men's Two-button Side Vent Sport CoatJoseph AbboudSuits & Sport Coats264.0101.92904.01759.82301122151056.0656.570.6060.15380.39290.06670.57690.00107580.00125770.000165543073465738442100111129121441338890811740818610
AIR JORDAN DOMINATE SHORTS MENS 465071-100JordanShorts903.0454.212709.01346.37530020.00.00.4970.00.60.00.40.00100350.00096222.76e-0558791688723581346317458170692264222642128741346321891745823875
The North Face Denali Down Mens Jacket 2013The North FaceOuterwear & Coats903.0436.152709.01400.551332263612.01867.40.5170.40.27270.15380.66670.00100350.0010017.17e-055107742323588442100139823107358312142841263412990
Diesel Men's Lagnum Leather JacketDieselOuterwear & Coats598.0267.92392.01320.38741111196.0660.190.5520.20.66670.14290.20.00088610.00094373.86e-05575691086257763978702923197928973731263711851270626859
Nobis Merideth ParkaNobisOuterwear & Coats795.0382.392385.01237.82731121590.0825.210.5190.250.50.14290.40.00088350.00088473.86e-05332310128625235839787029170693745104851134432691270623875
Canada Goose Women's Expedition ParkaCanada GooseOuterwear & Coats795.0395.912385.01197.2743010795.0399.090.5020.01.00.250.00.00088350.00085572.21e-05331910132105323581346370292714523027712357134631554227145
Men's Classic Sheepskin B-3 Bomber JacketOverland Sheepskin CoOuterwear & Coats595.0270.732380.01297.11340271190.0648.550.5450.00.36360.15380.63640.00088160.0009277.17e-0560551211423776134632100623959481211346396381263416487
Michael Kors Men's Marlow Wool-Blend Single-Breasted Fitted Top CoatMichael KorsOuterwear & Coats255.0102.262295.01374.7159123765.0458.230.5990.10.69230.13330.250.00085020.00098258.27e-054697281381875397821001086925220826121346111841431726348
Barbour Sapper JacketBarbourOuterwear & Coats429.0210.212145.01093.95105113858.0437.580.510.16670.55560.10.3750.00079460.00078185.52e-059481141819622513978702910869185233115101319631511636624717
Arc'teryx Moray Jacket - Women'sArc'teryxOuterwear & Coats699.0343.912097.01065.28930332097.01065.280.5080.00.50.33330.50.00077680.00076134.96e-0541361520335523581346352610869112211720134633269261919501

Top products by Profit Margin

WITH first_layer AS (
SELECT
  p.name AS product_name,
  p.brand AS product_brand,
  p.category AS product_category,
  ROUND(AVG(oi.sale_price), 2) AS avg_product_sale_price,
  ROUND(AVG(p.cost), 2) AS avg_product_cost,
ROUND(SUM(CASE WHEN oi.status = 'Complete' THEN oi.sale_price ELSE 0 END), 2) AS
revenue,
ROUND(SUM(CASE WHEN oi.status = 'Complete' THEN (oi.sale_price - p.cost) ELSE 0
END), 2) AS profit,
COUNT(*) AS unit_orders_placed,
SUM(CASE WHEN oi.status = 'Complete' THEN 1 ELSE 0 END) AS units_completed,
SUM(CASE WHEN oi.status = 'Returned' THEN 1 ELSE 0 END) AS units_returned,
SUM(CASE WHEN oi.status = 'Cancelled' THEN 1 ELSE 0 END) AS units_cancelled,
SUM(CASE WHEN oi.status IN ('Shipped', 'Processing') THEN 1 ELSE 0 END) AS units_en_route,
ROUND(SUM(CASE WHEN oi.status IN ('Returned', 'Cancelled') THEN oi.sale_price ELSE 0 END), 2) AS lost_revenue,
ROUND(SUM(CASE WHEN oi.status IN ('Returned', 'Cancelled') THEN (oi.sale_price - p.cost) ELSE 0 END), 2) AS lost_profit
FROM `bigquery-public-data.thelook_ecommerce.order_items` AS oi
JOIN `bigquery-public-data.thelook_ecommerce.orders` AS o
ON oi.order_id = o.order_id
JOIN `bigquery-public-data.thelook_ecommerce.products` AS p
ON oi.product_id = p.id
GROUP BY product_name, product_brand, product_category
),
second_layer AS (
SELECT
  *,
  ROUND((profit / NULLIF(revenue, 0)), 4) AS profit_margin,
  ROUND(units_returned / NULLIF(units_completed + units_returned, 0), 4) AS return_rate,
  ROUND(units_completed / NULLIF(unit_orders_placed - units_cancelled, 0), 4) AS completion_rate,
  ROUND(units_cancelled / NULLIF(unit_orders_placed, 0), 4) AS cancellation_rate,
  ROUND(units_en_route / NULLIF(unit_orders_placed - (units_cancelled + units_returned), 0), 4) AS en_route_rate,
  ROUND(revenue / SUM(revenue) OVER(), 7) AS revenue_share,
  ROUND(profit / SUM(profit) OVER(), 7) AS profit_share,
  ROUND(unit_orders_placed / SUM(unit_orders_placed) OVER(), 7) AS unit_orders_placed_share
FROM first_layer
)
SELECT
  *,
  RANK() OVER(ORDER BY avg_product_sale_price DESC) AS avg_product_sale_price_rank,
  RANK() OVER(ORDER BY avg_product_cost DESC) AS avg_product_cost_rank,
  RANK() OVER(ORDER BY revenue DESC) AS revenue_rank,
  RANK() OVER(ORDER BY profit DESC) AS profit_rank,
  RANK() OVER(ORDER BY unit_orders_placed DESC) AS unit_orders_placed_rank,
  RANK() OVER(ORDER BY units_completed DESC) AS units_completed_rank,
  RANK() OVER(ORDER BY units_returned DESC) AS units_returned_rank,
  RANK() OVER(ORDER BY units_cancelled DESC) AS units_cancelled_rank,
  RANK() OVER(ORDER BY units_en_route DESC) AS units_en_route_rank,
  RANK() OVER(ORDER BY lost_revenue DESC) AS lost_revenue_rank,
  RANK() OVER(ORDER BY lost_profit DESC) AS lost_profit_rank,
  RANK() OVER(ORDER BY profit_margin DESC) AS profit_margin_rank,
  RANK() OVER(ORDER BY return_rate DESC) AS return_rate_rank,
  RANK() OVER(ORDER BY completion_rate DESC) AS completion_rate_rank,
  RANK() OVER(ORDER BY cancellation_rate DESC) AS cancellation_rate_rank,
  RANK() OVER(ORDER BY en_route_rate DESC) AS en_route_rate_rank
FROM second_layer
ORDER BY
  profit_margin_rank ASC
LIMIT 15;
product_name product_brand product_category avg_product_sale_price avg_product_cost revenue profit unit_orders_placed units_completed units_returned units_cancelled units_en_route lost_revenue lost_profit profit_margin return_rate completion_rate cancellation_rate en_route_rate revenue_share profit_share unit_orders_placed_share avg_product_sale_price_rank avg_product_cost_rank revenue_rank profit_rank unit_orders_placed_rank units_completed_rank units_returned_rank units_cancelled_rank units_en_route_rank lost_revenue_rank lost_profit_rank profit_margin_rank return_rate_rank completion_rate_rank cancellation_rate_rank en_route_rate_rank
Plus Size Black Jazzy JacketFashion LoveBlazers & Jackets34.9911.58104.9770.225301134.9923.410.6690.00.750.20.253.89e-055.02e-052.76e-05159632094976985726168872358134637029231971723614884113463746843526348
Ulla Popken Plus Size Soutache Embroidered JacketUlla PopkenBlazers & Jackets89.029.46178.0119.087210489.059.540.6690.33330.28570.00.66676.59e-058.51e-053.86e-0549948857410227738625611439781745861059306691918752132381745812990
Ted Baker Women's MownaTed BakerBlazers & Jackets206.9668.5206.96138.4671114413.92276.910.6690.50.16670.14290.87.67e-059.9e-053.86e-057712149322322008625132643978702961059256211427519436127067598
Eddie Bauer Signature Stretch BlazerEddie BauerBlazers & Jackets149.9549.63299.9200.6392025299.9200.630.6690.00.28570.22220.71430.00011110.00014344.96e-0519563876177511373355611413463210030261734112611346313238783712035
DKNYC Women's 2 Button BlazerDKNYCBlazers & Jackets99.0932.8198.18132.5862202198.18132.580.6690.50.33330.00.57.34e-059.48e-053.31e-0541107591345023631253261148441745817069337523201427597471745819501
Allegra K Front Opening Long Sleeve Womenwear Form-fitting Blazer Off White XSAllegra KBlazers & Jackets18.686.1837.3624.996201318.6812.50.66890.00.40.16670.61.38e-051.79e-053.31e-052342525885166271425012532611413463702910869207711935561346374821073116953
Allegra K Women Horizontal Stripes Bubble Sleeve Spring Coat Black XSAllegra KBlazers & Jackets11.673.8623.3415.6110210711.677.810.66880.33330.20.00.77788.6e-061.12e-055.52e-05265232773619737177841962611439781745862321976212717875217510174589281
BB Dakota Yellow Marigold Naples Boxy Cropped Blazer Button up Front and Double PocketsBB DakotaBlazers & Jackets77.025.5677.051.4461023154.0102.870.66810.00.250.33330.752.85e-053.68e-053.31e-05622210673103928077125321326413463210010869494433448134631440826199487
Mango Women's Suit Cropped Blazer - ChipiMANGOBlazers & Jackets49.9916.699.9866.794210149.9933.390.6680.33330.50.00.33333.7e-054.77e-052.21e-051089416411810960882105361143978174582319714347117799875232691745824854
Calvin Klein Jeans Women's Moto JacketCalvin Klein JeansBlazers & Jackets56.3918.7256.3937.675110356.3937.670.6680.50.20.00.752.09e-052.69e-052.76e-05950314790131331070716887132643978174581086913238107789427517510174589487
Allegra K Women Double Breasted Long Sleeve Autumn Blazer Coat Army Green XSAllegra KBlazers & Jackets16.055.3332.121.444201116.0510.720.66790.00.66670.250.33331.19e-051.53e-052.21e-052429626673175421549921053611413463702923197211642012911134631185554224854
Pendleton Women's Trimmed Herringbone BlazerPendletonBlazers & Jackets258.085.91516.0344.1762121774.0516.260.6670.33330.50.33330.33330.00019110.0002463.31e-05462128259436412532611439782100231972511531287523269261924854
Corey Lynn Calter Women's Jessica JacketCoreyLynnCalterBlazers & Jackets79.026.3179.052.693101179.052.690.6670.00.50.33330.52.93e-053.77e-051.65e-0559511028410194788924645132641346370292319710287795312134633269261919501
Only Hearts Women's Double Knit 2 Button JacketOnly HeartsBlazers & Jackets185.061.611110.0740.371160050.00.00.6670.00.54550.00.45450.00041120.00052916.07e-05111426729456116184134631745830262264222642121346332461745823452
Plus Size White Night Sky TopAlex EveningsBlazers & Jackets124.9941.62124.9983.3741201249.98166.740.6670.66670.250.00.54.63e-055.96e-052.21e-0529395153640345932105313264844174582319723851545123055144081745819501

Top products by Lost Revenue

WITH first_layer AS (
SELECT
  p.name AS product_name,
  p.brand AS product_brand,
  p.category AS product_category,
  ROUND(AVG(oi.sale_price), 2) AS avg_product_sale_price,
  ROUND(AVG(p.cost), 2) AS avg_product_cost,
ROUND(SUM(CASE WHEN oi.status = 'Complete' THEN oi.sale_price ELSE 0 END), 2) AS
revenue,
ROUND(SUM(CASE WHEN oi.status = 'Complete' THEN (oi.sale_price - p.cost) ELSE 0
END), 2) AS profit,
COUNT(*) AS unit_orders_placed,
SUM(CASE WHEN oi.status = 'Complete' THEN 1 ELSE 0 END) AS units_completed,
SUM(CASE WHEN oi.status = 'Returned' THEN 1 ELSE 0 END) AS units_returned,
SUM(CASE WHEN oi.status = 'Cancelled' THEN 1 ELSE 0 END) AS units_cancelled,
SUM(CASE WHEN oi.status IN ('Shipped', 'Processing') THEN 1 ELSE 0 END) AS units_en_route,
ROUND(SUM(CASE WHEN oi.status IN ('Returned', 'Cancelled') THEN oi.sale_price ELSE 0 END), 2) AS lost_revenue,
ROUND(SUM(CASE WHEN oi.status IN ('Returned', 'Cancelled') THEN (oi.sale_price - p.cost) ELSE 0 END), 2) AS lost_profit
FROM `bigquery-public-data.thelook_ecommerce.order_items` AS oi
JOIN `bigquery-public-data.thelook_ecommerce.orders` AS o
ON oi.order_id = o.order_id
JOIN `bigquery-public-data.thelook_ecommerce.products` AS p
ON oi.product_id = p.id
GROUP BY product_name, product_brand, product_category
),
second_layer AS (
SELECT
  *,
  ROUND((profit / NULLIF(revenue, 0)), 4) AS profit_margin,
  ROUND(units_returned / NULLIF(units_completed + units_returned, 0), 4) AS return_rate,
  ROUND(units_completed / NULLIF(unit_orders_placed - units_cancelled, 0), 4) AS completion_rate,
  ROUND(units_cancelled / NULLIF(unit_orders_placed, 0), 4) AS cancellation_rate,
  ROUND(units_en_route / NULLIF(unit_orders_placed - (units_cancelled + units_returned), 0), 4) AS en_route_rate,
  ROUND(revenue / SUM(revenue) OVER(), 7) AS revenue_share,
  ROUND(profit / SUM(profit) OVER(), 7) AS profit_share,
  ROUND(unit_orders_placed / SUM(unit_orders_placed) OVER(), 7) AS unit_orders_placed_share
FROM first_layer
)
SELECT
  *,
  RANK() OVER(ORDER BY avg_product_sale_price DESC) AS avg_product_sale_price_rank,
  RANK() OVER(ORDER BY avg_product_cost DESC) AS avg_product_cost_rank,
  RANK() OVER(ORDER BY revenue DESC) AS revenue_rank,
  RANK() OVER(ORDER BY profit DESC) AS profit_rank,
  RANK() OVER(ORDER BY unit_orders_placed DESC) AS unit_orders_placed_rank,
  RANK() OVER(ORDER BY units_completed DESC) AS units_completed_rank,
  RANK() OVER(ORDER BY units_returned DESC) AS units_returned_rank,
  RANK() OVER(ORDER BY units_cancelled DESC) AS units_cancelled_rank,
  RANK() OVER(ORDER BY units_en_route DESC) AS units_en_route_rank,
  RANK() OVER(ORDER BY lost_revenue DESC) AS lost_revenue_rank,
  RANK() OVER(ORDER BY lost_profit DESC) AS lost_profit_rank,
  RANK() OVER(ORDER BY profit_margin DESC) AS profit_margin_rank,
  RANK() OVER(ORDER BY return_rate DESC) AS return_rate_rank,
  RANK() OVER(ORDER BY completion_rate DESC) AS completion_rate_rank,
  RANK() OVER(ORDER BY cancellation_rate DESC) AS cancellation_rate_rank,
  RANK() OVER(ORDER BY en_route_rate DESC) AS en_route_rate_rank
FROM second_layer
ORDER BY
  lost_revenue_rank ASC
LIMIT 15;
product_name product_brand product_category avg_product_sale_price avg_product_cost revenue profit unit_orders_placed units_completed units_returned units_cancelled units_en_route lost_revenue lost_profit profit_margin return_rate completion_rate cancellation_rate en_route_rate revenue_share profit_share unit_orders_placed_share avg_product_sale_price_rank avg_product_cost_rank revenue_rank profit_rank unit_orders_placed_rank units_completed_rank units_returned_rank units_cancelled_rank units_en_route_rank lost_revenue_rank lost_profit_rank profit_margin_rank return_rate_rank completion_rate_rank cancellation_rate_rank en_route_rate_rank
Canada Goose Men's The Chateau JacketCanada GooseActive815.0337.410.00.0601414075.02387.951.00.00.66671.00.00.03.31e-0531392253222532125322253239781262319711225321225321541
The North Face Denali Down Mens Jacket 2013The North FaceOuterwear & Coats903.0436.152709.01400.551332263612.01867.40.5170.40.27270.15380.66670.00100350.0010017.17e-055107742323588442100139823107358312142841263412990
Canada Goose Women's Chilliwack BomberCanada GooseOuterwear & Coats695.0287.73695.0407.27813223475.02036.350.5860.750.16670.250.66670.00025750.00029114.41e-054652294240550713264151210017069323719283419436554212990
Woolrich Arctic Parka DFWoolrichOuterwear & Coats990.0478.172970.01535.491232162970.01535.490.5170.40.27270.08330.66670.00110020.00109746.62e-05365669423588447029139844107358312142841714412990
Mens Nike AirJordan Varsity Hoodie Jacket Grey / Black 451582-066JordanOuterwear & Coats903.0409.06903.0493.94812142709.01481.820.5470.66670.14290.1250.80.00033450.0003534.41e-0551414915355071326484470296105567915305520815143387598
NIKE WOMEN'S PRO COMPRESSION SPORTS BRA *Outstanding Support and Comfort*NikeIntimates903.0512.00.00.0400312709.01173.00.00.751.00.00.02.21e-05542253222532210532253213463526231975152253225326225321091
Spyder Women's Jesst In Time JacketSpyderOuterwear & Coats650.0295.753250.01771.251054012600.01417.00.5450.44440.50.00.16670.00120390.00126595.52e-055250341962251301745823197778121826432691745827059
IGIGI by Yuliya Raquel Plus Size Kandinsky GownIGIGI by Yuliya RaquelDresses325.0136.170.00.01303552600.01510.61.00.00.38461.00.00.07.17e-05236300225322253242322532151243026752253212253223331
Canada Goose Women's MystiqueCanada GooseActive750.0280.5750.0469.5911252250.01408.50.6260.50.14290.22220.83330.00027780.00033554.96e-0537532301703355132643978210030269898442752081578376580
Canada Goose Women's MystiqueCanada GooseOuterwear & Coats750.0353.251500.0793.5623012250.01190.250.5290.60.33330.00.33330.00055570.00056713.31e-053735414412532611415117458231979139645410397471745824854
Arc'teryx Moray Jacket - Women'sArc'teryxOuterwear & Coats699.0343.912097.01065.28930332097.01065.280.5080.00.50.33330.50.00077680.00076134.96e-0541361520335523581346352610869112211720134633269261919501
Magaschoni Women's Shimmer JacketMagaschoniBlazers & Jackets698.0258.96698.0439.04611222094.01317.130.6290.50.250.33330.66670.00025860.00031383.31e-05435828820112532132643978210017069129839427514408261912990
Joseph Abboud Men's Super 120's Two Button Side Vent Single Pleat Pant Tuxedo With Grosgrain Notch LapelJoseph AbboudSuits & Sport Coats405.26145.08405.26260.181112352026.31300.880.6420.66670.1250.27270.83330.00015010.00018596.07e-051082569616861161132648445263026131036130552167554086580
DarlaAlpha IndustriesOuterwear & Coats999.0404.61998.01188.81722031998.01188.810.5950.50.28570.00.60.00074010.00084963.86e-051161815862561148441745810869141429254275132381745816953
Alpha Industries Rip Stop ShortAlpha IndustriesShorts999.0482.52999.0516.48811151998.01032.970.5170.50.14290.1250.83330.00037010.00036914.41e-0515120134550713264397870293026142510735427520815143386580

Analytical Insights & Business Recommendations

The top 15 products by revenue are overwhelmingly dominated by Outerwear & Coats (11 of 15), with premium brands like The North Face, Canada Goose, Woolrich, Spyder, and Arc'teryx. This category commands the highest average sale prices ($595–$999) and generates the most revenue per unit sold. The top revenue product, ASICS Cushion Low Socks, is anomalous – priced at $903 (likely a data entry error or premium bundle) but sitting in the Active category. It ranks #1 in both revenue and profit with $3,612 and $2,116.63 respectively. Joseph Abboud Men's Sport Coat stands out as a high-volume high-revenue outlier with 30 unit orders placed (rank #7 across all products) while also ranking #5 in profit. This combination of volume and margin makes it the strongest candidate for promotional investment among top products.

The highest profit margin products (~66.9%) are exclusively Blazers & Jackets from mid-range brands (Fashion Love, Ulla Popken, Ted Baker, Eddie Bauer, DKNYC). These have low costs relative to sale prices but individually small revenue contributions. Since these high-margin blazer products have small individual revenue footprints, promote them in cohorts – bundle or cross-sell multiple blazer/jacket items together to amplify the margin advantage across a group rather than relying on individual unit sales. For top revenue products that already have strong demand (like the Joseph Abboud Sport Coat at 60.6% margin), consider strategic price testing. With 30 orders placed and strong brand recognition, there may be room to incrementally increase price by 3–5% without meaningfully reducing demand, yielding significant net profit gains given the volume.

Several top products have alarming return/cancellation profiles. The Canada Goose Men's Chateau Jacket has $0 in completed revenue – 100% of its orders were returned or cancelled, yet it ranks #1 in lost revenue ($4,075) and lost profit ($2,387.95). This product is generating no value while consuming inventory space, shipping bandwidth, and processing resources. IGIGI Kandinsky Gown similarly has a 100% return rate with $0 revenue and $2,600 in lost revenue. Both products warrant immediate quality inspection and supplier communication. The Spyder Women's Jesst In Time Jacket has a 44.4% return rate but still ranks #3 in revenue ($3,250) and #4 in profit ($1,771.25), meaning the returns are masking what could be even stronger performance. Investigate root causes of returns – sizing issues, product description mismatches, or quality defects. Products with high return rates among the top earners (Woolrich Arctic Parka at 40%, North Face Denali Down at 40%) should be flagged for quality inspection. Their return-related losses ($2,970 and $3,612 respectively) nearly equal their actual revenue, meaning nearly half of all potential profit is evaporating.

Bottom Products

Bottom products by Revenue

WITH first_layer AS (
SELECT
  p.name AS product_name,
  p.brand AS product_brand,
  p.category AS product_category,
  ROUND(AVG(oi.sale_price), 2) AS avg_product_sale_price,
  ROUND(AVG(p.cost), 2) AS avg_product_cost,
ROUND(SUM(CASE WHEN oi.status = 'Complete' THEN oi.sale_price ELSE 0 END), 2) AS
revenue,
ROUND(SUM(CASE WHEN oi.status = 'Complete' THEN (oi.sale_price - p.cost) ELSE 0
END), 2) AS profit,
COUNT(*) AS unit_orders_placed,
SUM(CASE WHEN oi.status = 'Complete' THEN 1 ELSE 0 END) AS units_completed,
SUM(CASE WHEN oi.status = 'Returned' THEN 1 ELSE 0 END) AS units_returned,
SUM(CASE WHEN oi.status = 'Cancelled' THEN 1 ELSE 0 END) AS units_cancelled,
SUM(CASE WHEN oi.status IN ('Shipped', 'Processing') THEN 1 ELSE 0 END) AS units_en_route,
ROUND(SUM(CASE WHEN oi.status IN ('Returned', 'Cancelled') THEN oi.sale_price ELSE 0 END), 2) AS lost_revenue,
ROUND(SUM(CASE WHEN oi.status IN ('Returned', 'Cancelled') THEN (oi.sale_price - p.cost) ELSE 0 END), 2) AS lost_profit
FROM `bigquery-public-data.thelook_ecommerce.order_items` AS oi
JOIN `bigquery-public-data.thelook_ecommerce.orders` AS o
ON oi.order_id = o.order_id
JOIN `bigquery-public-data.thelook_ecommerce.products` AS p
ON oi.product_id = p.id
GROUP BY product_name, product_brand, product_category
),
second_layer AS (
SELECT
  *,
  ROUND((profit / NULLIF(revenue, 0)), 4) AS profit_margin,
  ROUND(units_returned / NULLIF(units_completed + units_returned, 0), 4) AS return_rate,
  ROUND(units_completed / NULLIF(unit_orders_placed - units_cancelled, 0), 4) AS completion_rate,
  ROUND(units_cancelled / NULLIF(unit_orders_placed, 0), 4) AS cancellation_rate,
  ROUND(units_en_route / NULLIF(unit_orders_placed - (units_cancelled + units_returned), 0), 4) AS en_route_rate,
  ROUND(revenue / SUM(revenue) OVER(), 7) AS revenue_share,
  ROUND(profit / SUM(profit) OVER(), 7) AS profit_share,
  ROUND(unit_orders_placed / SUM(unit_orders_placed) OVER(), 7) AS unit_orders_placed_share
FROM first_layer
)
SELECT
  *,
  RANK() OVER(ORDER BY avg_product_sale_price DESC) AS avg_product_sale_price_rank,
  RANK() OVER(ORDER BY avg_product_cost DESC) AS avg_product_cost_rank,
  RANK() OVER(ORDER BY revenue DESC) AS revenue_rank,
  RANK() OVER(ORDER BY profit DESC) AS profit_rank,
  RANK() OVER(ORDER BY unit_orders_placed DESC) AS unit_orders_placed_rank,
  RANK() OVER(ORDER BY units_completed DESC) AS units_completed_rank,
  RANK() OVER(ORDER BY units_returned DESC) AS units_returned_rank,
  RANK() OVER(ORDER BY units_cancelled DESC) AS units_cancelled_rank,
  RANK() OVER(ORDER BY units_en_route DESC) AS units_en_route_rank,
  RANK() OVER(ORDER BY lost_revenue DESC) AS lost_revenue_rank,
  RANK() OVER(ORDER BY lost_profit DESC) AS lost_profit_rank,
  RANK() OVER(ORDER BY profit_margin DESC) AS profit_margin_rank,
  RANK() OVER(ORDER BY return_rate DESC) AS return_rate_rank,
  RANK() OVER(ORDER BY completion_rate DESC) AS completion_rate_rank,
  RANK() OVER(ORDER BY cancellation_rate DESC) AS cancellation_rate_rank,
  RANK() OVER(ORDER BY en_route_rate DESC) AS en_route_rate_rank
FROM second_layer
ORDER BY
  revenue_rank DESC
LIMIT 15;
product_name product_brand product_category avg_product_sale_price avg_product_cost revenue profit unit_orders_placed units_completed units_returned units_cancelled units_en_route lost_revenue lost_profit profit_margin return_rate completion_rate cancellation_rate en_route_rate revenue_share profit_share unit_orders_placed_share avg_product_sale_price_rank avg_product_cost_rank revenue_rank profit_rank unit_orders_placed_rank units_completed_rank units_returned_rank units_cancelled_rank units_en_route_rank lost_revenue_rank lost_profit_rank profit_margin_rank return_rate_rank completion_rate_rank cancellation_rate_rank en_route_rate_rank
Marc Ecko Cut & Sew Men's Pinstripe and Plaid Pieced VestMarc Ecko Cut & SewSuits & Sport Coats47.4317.830.00.0100037142.2988.790.00.31.00.00.05.52e-0512005154752253222532196222532134635266235528418922532253262253244431
Dexter's Wings - Dexter T-shirtDexterTops & Tees19.9511.110.00.05011339.917.681.00.00.21.00.00.02.76e-05230402143922532225321688722532397870291086916370171242253212253284351
RSQ Miami Womens JeggingsRSQPants & Capris39.9922.070.00.04011279.9835.831.00.00.251.00.00.02.21e-05139251259922532225322105322532397870291706910039112082253212253255421
Medela Sleep Bra Nude LargeMedelaMaternity15.996.880.00.07031363.9636.461.00.00.14291.00.00.03.86e-0524393252402253222532862522532151702910869122261105522532122532127061
Diesel Women's Louvboot Slim Flare JeanDieselJeans198.097.610.00.040022396.0200.770.00.51.00.00.02.21e-058758362253222532210532253213463210017069100511242253225326225324771
SockGuy Men's Wooligan SocksSockGuySocks12.957.330.00.04002225.911.240.00.51.00.00.02.21e-052592424844225322253221053225321346321001706919080199332253225326225324771
Allegra K Mens Casual Vertical Stripes Pattern Decor NEW Stylish Short Trousers Deep Beige W31Allegra KShorts15.957.990.00.06010515.957.961.00.00.01.00.00.03.31e-052448824197225322253212532225323978174583026212502122122532122532174581
Southpole Men's Angled Cross With Shadowed Background Print Fashion T-ShirtSouthpoleTops & Tees25.013.520.00.06001525.011.480.00.16671.00.00.03.31e-0519651190402253222532125322253213463702930261916419837225322532622532107311
Brushed-Back Satin Pajamas - Women's SizesCarol Wright GiftsSleep & Lounge24.9915.070.00.03010224.999.921.00.00.01.00.00.01.65e-0520698177082253222532246452253239781745817069195002047722532122532174581
Tommy Hilfiger Men's Tommy Tartan BoxerTommy HilfigerUnderwear18.08.690.00.05011336.018.611.00.00.21.00.00.02.76e-05235122357922532225321688722532397870291086916903167472253212253284351
One Pair MarcolianiMen's Italian Cashmere and Silk Over-the-Calf Fancy Argyle SocksMarcoliani MilanoSocks89.549.580.00.02010189.539.921.00.00.01.00.00.01.1e-0549363880225322253226863225323978174582319792831029022532122532174581
Allegra K Ladies Dotted Double V Neck Banded Dress Pink White MAllegra KDresses10.154.830.00.0500050.00.00.00.01.00.00.02.76e-05269372709722532225321688722532134631745830262264222642225322532622532174581
7 For All Mankind Women's Relaxed Mid Roll Up Short Authentic Nakita7 For All MankindShorts178.082.950.00.060213534.0285.161.00.00.16671.00.00.03.31e-05124614032253222532125322253284470291086957058222532122532107311
Fox Men's Essex ShortFoxShorts42.519.510.00.03001242.522.990.00.33331.00.00.01.65e-0513301142682253222532246452253213463702917069157311503422532253262253226191
Motherhood Maternity: Plus Size Secret Fit Belly(r) Boot Cut Maternity JeansMotherhood MaternityMaternity34.9815.740.00.0300030.00.00.00.01.00.00.01.65e-051619717160225322253224645225321346317458108692264222642225322532622532174581

Analytical Insights & Business Recommendations

The bottom 15 products by revenue all show $0 in completed revenue – every order for these items was either cancelled, returned, or is still in transit with no completions. Products like Marc Ecko Cut & Sew Pinstripe Vest (10 orders, $0 revenue), Diesel Women's Louvboot Slim Flare Jean (4 orders, $0 revenue), and Allegra K Dotted Dress (5 orders, $0 revenue) are occupying warehouse space and shipping bandwidth without generating any return. Many of these zero-revenue products still have units en route (shown by en_route_rate of 1.0), meaning they are actively consuming fulfillment resources. Others have high cancellation rates, suggesting customers are abandoning these purchases during checkout or processing.

Recommendation: These zero-revenue products should be evaluated for delisting. If a product has generated multiple orders but zero completions, the pattern indicates either a systemic quality issue, misleading product listings, or severe delivery problems. Flag all products with 3+ orders and $0 revenue for an immediate review, and consider removing them from active listings if the pattern persists, as they are wasting inventory space and shipping bandwidth that could serve profitable items.

Top Brands

Top brands by Revenue

WITH first_layer AS (
SELECT
  p.brand AS product_brand,
  ROUND(AVG(oi.sale_price), 2) AS avg_product_sale_price,
  ROUND(AVG(p.cost), 2) AS avg_product_cost,
ROUND(SUM(CASE WHEN oi.status = 'Complete' THEN oi.sale_price ELSE 0 END), 2) AS
revenue,
ROUND(SUM(CASE WHEN oi.status = 'Complete' THEN (oi.sale_price - p.cost) ELSE 0
END), 2) AS profit,
COUNT(*) AS unit_orders_placed,
SUM(CASE WHEN oi.status = 'Complete' THEN 1 ELSE 0 END) AS units_completed,
SUM(CASE WHEN oi.status = 'Returned' THEN 1 ELSE 0 END) AS units_returned,
SUM(CASE WHEN oi.status = 'Cancelled' THEN 1 ELSE 0 END) AS units_cancelled,
SUM(CASE WHEN oi.status IN ('Shipped', 'Processing') THEN 1 ELSE 0 END) AS units_en_route,
ROUND(SUM(CASE WHEN oi.status IN ('Returned', 'Cancelled') THEN oi.sale_price ELSE 0 END), 2) AS lost_revenue,
ROUND(SUM(CASE WHEN oi.status IN ('Returned', 'Cancelled') THEN (oi.sale_price - p.cost) ELSE 0 END), 2) AS lost_profit
FROM `bigquery-public-data.thelook_ecommerce.order_items` AS oi
JOIN `bigquery-public-data.thelook_ecommerce.orders` AS o
ON oi.order_id = o.order_id
JOIN `bigquery-public-data.thelook_ecommerce.products` AS p
ON oi.product_id = p.id
GROUP BY product_brand
),
second_layer AS (
SELECT
  *,
  ROUND((profit / NULLIF(revenue, 0)), 4) AS profit_margin,
  ROUND(units_returned / NULLIF(units_completed + units_returned, 0), 4) AS return_rate,
  ROUND(units_completed / NULLIF(unit_orders_placed - units_cancelled, 0), 4) AS completion_rate,
  ROUND(units_cancelled / NULLIF(unit_orders_placed, 0), 4) AS cancellation_rate,
  ROUND(units_en_route / NULLIF(unit_orders_placed - (units_cancelled + units_returned), 0), 4) AS en_route_rate,
  ROUND(revenue / SUM(revenue) OVER(), 7) AS revenue_share,
  ROUND(profit / SUM(profit) OVER(), 7) AS profit_share,
  ROUND(unit_orders_placed / SUM(unit_orders_placed) OVER(), 7) AS unit_orders_placed_share
FROM first_layer
)
SELECT
  *,
  RANK() OVER(ORDER BY avg_product_sale_price DESC) AS avg_product_sale_price_rank,
  RANK() OVER(ORDER BY avg_product_cost DESC) AS avg_product_cost_rank,
  RANK() OVER(ORDER BY revenue DESC) AS revenue_rank,
  RANK() OVER(ORDER BY profit DESC) AS profit_rank,
  RANK() OVER(ORDER BY unit_orders_placed DESC) AS unit_orders_placed_rank,
  RANK() OVER(ORDER BY units_completed DESC) AS units_completed_rank,
  RANK() OVER(ORDER BY units_returned DESC) AS units_returned_rank,
  RANK() OVER(ORDER BY units_cancelled DESC) AS units_cancelled_rank,
  RANK() OVER(ORDER BY units_en_route DESC) AS units_en_route_rank,
  RANK() OVER(ORDER BY lost_revenue DESC) AS lost_revenue_rank,
  RANK() OVER(ORDER BY lost_profit DESC) AS lost_profit_rank,
  RANK() OVER(ORDER BY profit_margin DESC) AS profit_margin_rank,
  RANK() OVER(ORDER BY return_rate DESC) AS return_rate_rank,
  RANK() OVER(ORDER BY completion_rate DESC) AS completion_rate_rank,
  RANK() OVER(ORDER BY cancellation_rate DESC) AS cancellation_rate_rank,
  RANK() OVER(ORDER BY en_route_rate DESC) AS en_route_rate_rank
FROM second_layer
ORDER BY
  revenue_rank ASC
LIMIT 15;
product_brand avg_product_sale_price avg_product_cost revenue profit unit_orders_placed units_completed units_returned units_cancelled units_en_route lost_revenue lost_profit profit_margin return_rate completion_rate cancellation_rate en_route_rate revenue_share profit_share unit_orders_placed_share avg_product_sale_price_rank avg_product_cost_rank revenue_rank profit_rank unit_orders_placed_rank units_completed_rank units_returned_rank units_cancelled_rank units_en_route_rank lost_revenue_rank lost_profit_rank profit_margin_rank return_rate_rank completion_rate_rank cancellation_rate_rank en_route_rate_rank
Diesel138.2468.9253774.8127000.8146637814321373249754.624735.410.50210.27450.30170.14530.65950.01992040.01929710.00808722051841213101213131215021319122113181552
Calvin Klein62.4929.3153041.7628267.043180820322471156748698.125795.420.53290.2820.30270.14810.65650.01964880.02020210.017542580583621222222111281282121212701568
Carhartt68.4132.0244947.9623945.232509663251366122941134.2222022.280.53270.27460.30940.14590.64960.01665060.01711340.013840970372433333335311321317115513111623
True Religion196.17101.743598.7821127.88792258414642443136.5420619.760.48460.27180.3070.16610.65330.01615080.01509980.00484991644427283325294517051347118610641592
7 For All Mankind155.6781.3339429.5518708.21108625410817954544113.7321179.320.47450.29830.280.16480.68210.01460630.01337050.00599091561235520241919203418261168150310671192
Volcom58.6729.9128804.3914059.0189348218229493526458.9912887.050.48810.27410.30140.15530.65980.01067030.01004780.0104428877805685475591016631320122311741547
Quiksilver57.0130.9127609.1912579.68187347120229790326410.1712067.70.45560.30010.29890.15860.65720.01022760.00899050.010332490376471466547101420661129127511261563
Columbia69.3731.7226587.2814439.48152937413525276826842.4814585.030.54310.26520.29290.16480.67250.0098490.01031970.008434768773786111113911879871379134010671270
Tommy Hilfiger71.6232.4626074.4914100.38161540416225479529731.2616179.420.54080.28620.29680.15730.66310.00965910.01007740.0089092649706978810896610211218129411521525
Orvis128.9260.0725260.013494.357211866510236821012.011275.590.53420.2590.30050.14150.66430.00935730.00964420.003977423924510123939474438171711101416122814531519
The North Face440.81197.8225174.8813719.1323361203611621048.7511669.080.5450.24690.30960.15450.65540.00932580.00980490.001285399111015315218215115316169621608115311811574
Joe's Jeans152.8180.2325134.8111891.96697169769935327326.0213164.830.47310.31020.28260.1420.67620.0093110.0084990.003845163133121541423847417918501094148614481239
Jones New York100.5245.4724723.7813604.248462309611440620262.4110960.830.55020.29450.31420.13480.63840.00915870.00972280.0046673614031311322727343318188761178110615321701
Oakley110.4149.2624423.213410.528662259011843323073.4812801.680.54910.28570.30080.13630.65810.00904740.00958430.00477733163551413292830332712128961219122715221556
Ray-Ban118.8950.0823852.7813833.417982067813138325134.0814434.770.57990.27460.30880.16420.65030.0088360.00988660.004402227834615934323530371184371317116010731612

Top brands by Lost Revenue

WITH first_layer AS (
SELECT
  p.brand AS product_brand,
  ROUND(AVG(oi.sale_price), 2) AS avg_product_sale_price,
  ROUND(AVG(p.cost), 2) AS avg_product_cost,
ROUND(SUM(CASE WHEN oi.status = 'Complete' THEN oi.sale_price ELSE 0 END), 2) AS
revenue,
ROUND(SUM(CASE WHEN oi.status = 'Complete' THEN (oi.sale_price - p.cost) ELSE 0
END), 2) AS profit,
COUNT(*) AS unit_orders_placed,
SUM(CASE WHEN oi.status = 'Complete' THEN 1 ELSE 0 END) AS units_completed,
SUM(CASE WHEN oi.status = 'Returned' THEN 1 ELSE 0 END) AS units_returned,
SUM(CASE WHEN oi.status = 'Cancelled' THEN 1 ELSE 0 END) AS units_cancelled,
SUM(CASE WHEN oi.status IN ('Shipped', 'Processing') THEN 1 ELSE 0 END) AS units_en_route,
ROUND(SUM(CASE WHEN oi.status IN ('Returned', 'Cancelled') THEN oi.sale_price ELSE 0 END), 2) AS lost_revenue,
ROUND(SUM(CASE WHEN oi.status IN ('Returned', 'Cancelled') THEN (oi.sale_price - p.cost) ELSE 0 END), 2) AS lost_profit
FROM `bigquery-public-data.thelook_ecommerce.order_items` AS oi
JOIN `bigquery-public-data.thelook_ecommerce.orders` AS o
ON oi.order_id = o.order_id
JOIN `bigquery-public-data.thelook_ecommerce.products` AS p
ON oi.product_id = p.id
GROUP BY product_brand
),
second_layer AS (
SELECT
  *,
  ROUND((profit / NULLIF(revenue, 0)), 4) AS profit_margin,
  ROUND(units_returned / NULLIF(units_completed + units_returned, 0), 4) AS return_rate,
  ROUND(units_completed / NULLIF(unit_orders_placed - units_cancelled, 0), 4) AS completion_rate,
  ROUND(units_cancelled / NULLIF(unit_orders_placed, 0), 4) AS cancellation_rate,
  ROUND(units_en_route / NULLIF(unit_orders_placed - (units_cancelled + units_returned), 0), 4) AS en_route_rate,
  ROUND(revenue / SUM(revenue) OVER(), 7) AS revenue_share,
  ROUND(profit / SUM(profit) OVER(), 7) AS profit_share,
  ROUND(unit_orders_placed / SUM(unit_orders_placed) OVER(), 7) AS unit_orders_placed_share
FROM first_layer
)
SELECT
  *,
  RANK() OVER(ORDER BY avg_product_sale_price DESC) AS avg_product_sale_price_rank,
  RANK() OVER(ORDER BY avg_product_cost DESC) AS avg_product_cost_rank,
  RANK() OVER(ORDER BY revenue DESC) AS revenue_rank,
  RANK() OVER(ORDER BY profit DESC) AS profit_rank,
  RANK() OVER(ORDER BY unit_orders_placed DESC) AS unit_orders_placed_rank,
  RANK() OVER(ORDER BY units_completed DESC) AS units_completed_rank,
  RANK() OVER(ORDER BY units_returned DESC) AS units_returned_rank,
  RANK() OVER(ORDER BY units_cancelled DESC) AS units_cancelled_rank,
  RANK() OVER(ORDER BY units_en_route DESC) AS units_en_route_rank,
  RANK() OVER(ORDER BY lost_revenue DESC) AS lost_revenue_rank,
  RANK() OVER(ORDER BY lost_profit DESC) AS lost_profit_rank,
  RANK() OVER(ORDER BY profit_margin DESC) AS profit_margin_rank,
  RANK() OVER(ORDER BY return_rate DESC) AS return_rate_rank,
  RANK() OVER(ORDER BY completion_rate DESC) AS completion_rate_rank,
  RANK() OVER(ORDER BY cancellation_rate DESC) AS cancellation_rate_rank,
  RANK() OVER(ORDER BY en_route_rate DESC) AS en_route_rate_rank
FROM second_layer
ORDER BY
  lost_revenue_rank ASC
LIMIT 15;
product_brand avg_product_sale_price avg_product_cost revenue profit unit_orders_placed units_completed units_returned units_cancelled units_en_route lost_revenue lost_profit profit_margin return_rate completion_rate cancellation_rate en_route_rate revenue_share profit_share unit_orders_placed_share avg_product_sale_price_rank avg_product_cost_rank revenue_rank profit_rank unit_orders_placed_rank units_completed_rank units_returned_rank units_cancelled_rank units_en_route_rank lost_revenue_rank lost_profit_rank profit_margin_rank return_rate_rank completion_rate_rank cancellation_rate_rank en_route_rate_rank
Diesel138.2468.9253774.8127000.8146637814321373249754.624735.410.50210.27450.30170.14530.65950.01992040.01929710.00808722051841213101213131215021319122113181552
Calvin Klein62.4929.3153041.7628267.043180820322471156748698.125795.420.53290.2820.30270.14810.65650.01964880.02020210.017542580583621222222111281282121212701568
7 For All Mankind155.6781.3339429.5518708.21108625410817954544113.7321179.320.47450.29830.280.16480.68210.01460630.01337050.00599091561235520241919203418261168150310671192
True Religion196.17101.743598.7821127.88792258414642443136.5420619.760.48460.27180.3070.16610.65330.01615080.01509980.00484991644427283325294517051347118610641592
Carhartt68.4132.0244947.9623945.232509663251366122941134.2222022.280.53270.27460.30940.14590.64960.01665060.01711340.013840970372433333335311321317115513111623
Tommy Hilfiger71.6232.4626074.4914100.38161540416225479529731.2616179.420.54080.28620.29680.15730.66310.00965910.01007740.0089092649706978810896610211218129411521525
Joe's Jeans152.8180.2325134.8111891.96697169769935327326.0213164.830.47310.31020.28260.1420.67620.0093110.0084990.003845163133121541423847417918501094148614481239
Columbia69.3731.7226587.2814439.48152937413525276826842.4814585.030.54310.26520.29290.16480.67250.0098490.01031970.008434768773786111113911879871379134010671270
Volcom58.6729.9128804.3914059.0189348218229493526458.9912887.050.48810.27410.30140.15530.65980.01067030.01004780.0104428877805685475591016631320122311741547
Quiksilver57.0130.9127609.1912579.68187347120229790326410.1712067.70.45560.30010.29890.15860.65720.01022760.00899050.010332490376471466547101420661129127511261563
Ray-Ban118.8950.0823852.7813833.417982067813138325134.0814434.770.57990.27460.30880.16420.65030.0088360.00988660.004402227834615934323530371184371317116010731612
Oakley110.4149.2624423.213410.528662259011843323073.4812801.680.54910.28570.30080.13630.65810.00904740.00958430.00477733163551413292830332712128961219122715221556
Arc'teryx323.7146.1818141.79908.1427156224115222880.8512500.890.54620.28210.24350.15130.73080.00672040.00708120.001495222022191321691611321181313943128119281234808
Canada Goose577.82249.0612909.937257.71152215215722479.9312816.810.56220.40540.2340.18260.72150.00478240.0051870.000634445363433741226126532914116725721980814871
Allegra K14.356.7620908.1211061.060571467610943303722396.311874.90.5290.29370.28690.15570.67430.00774520.00790520.033413524422434161611111151511721190138411701255

Analytical Insights & Business Recommendations

Revenue vs. Profit Leadership Diverges: Diesel leads all brands in revenue ($53,774.81) but drops to #2 in profit ($27,000.80) due to a relatively low profit margin of 50.2%. Calvin Klein overtakes Diesel in profit ($28,267.04) despite ranking #2 in revenue, thanks to a stronger 53.3% margin. This divergence reveals that Diesel's higher average sale price ($138.24) comes with proportionally higher product costs ($68.92), compressing margins.

Recommendation: For high-revenue, lower-margin brands like Diesel, negotiate better supplier pricing given the volume leverage – 1,466 units ordered gives significant bargaining power. Even a 2–3% cost reduction on Diesel products would yield substantial additional profit given the revenue scale. Alternatively, since Diesel already commands premium pricing, explore whether modest price increases on best-selling Diesel items would be absorbed by demand without significant volume loss.

The North Face: Premium Pricing Power: The North Face ranks #11 in revenue ($25,174.88) but achieves this with only 233 unit orders – the fewest among the top 15 brands. Its average sale price of $440.81 is the highest by a wide margin (the next highest is True Religion at $196.17). This means The North Face extracts over 2x more revenue per unit than any comparable brand.

With a 54.5% profit margin and only 20 returns out of 81 completed/returned units (24.7% return rate – the lowest among top brands), The North Face represents the most efficient revenue-to-order ratio in the dataset.

Recommendation: Allocate increased internal inventory space and priority fulfillment to The North Face products. Their per-unit contribution is unmatched, and with the lowest return rate among top brands, each sale is highly likely to convert to retained revenue. Ensure stockouts never occur on The North Face items – lost sales on $440+ average items represent outsized opportunity cost.

Lost Revenue Leaders Mirror Revenue Leaders: The top brands by lost revenue are the same as the top brands by revenue – Diesel ($49,754.60 lost), Calvin Klein ($48,698.10), Carhartt ($41,134.22). This is expected since lost revenue scales with order volume and average price. However, the ratio of lost revenue to actual revenue is striking: Diesel loses $49K vs. earning $53K, meaning nearly half of all potential Diesel revenue evaporates through returns and cancellations.

Recommendation: For brands where lost revenue approaches or exceeds earned revenue, the cost of returns processing, reverse shipping, and restocking is a significant hidden expense. Investigate whether specific Diesel or Calvin Klein product lines disproportionately drive the returns, and target those SKUs for quality review or enhanced product descriptions rather than applying broad brand-level interventions.

Canada Goose: High Value, High Risk: Canada Goose stands out in the lost revenue table despite ranking #36 in revenue and #337 in unit orders. With only 115 orders placed, it generates $12,909.93 in revenue but $22,479.93 in lost revenue – nearly 2x what it actually earns. Its 40.5% return rate is the highest among brands appearing in the top 15 by lost profit.

Recommendation: Given Canada Goose's extremely high price point ($577.82 avg) and disproportionate loss ratio, this brand warrants a targeted investigation. With only 22 completed sales out of 115 orders, something systemic is driving cancellations and returns – possibly shipping delays on premium items, customer sticker shock after purchase, or quality/authenticity concerns. Consider whether the brand partnership is net-positive after accounting for return-processing costs on $500+ items.

Bottom Brands

Bottom brands by Profit Margin

WITH first_layer AS (
SELECT
  p.brand AS product_brand,
  ROUND(AVG(oi.sale_price), 2) AS avg_product_sale_price,
  ROUND(AVG(p.cost), 2) AS avg_product_cost,
ROUND(SUM(CASE WHEN oi.status = 'Complete' THEN oi.sale_price ELSE 0 END), 2) AS
revenue,
ROUND(SUM(CASE WHEN oi.status = 'Complete' THEN (oi.sale_price - p.cost) ELSE 0
END), 2) AS profit,
COUNT(*) AS unit_orders_placed,
SUM(CASE WHEN oi.status = 'Complete' THEN 1 ELSE 0 END) AS units_completed,
SUM(CASE WHEN oi.status = 'Returned' THEN 1 ELSE 0 END) AS units_returned,
SUM(CASE WHEN oi.status = 'Cancelled' THEN 1 ELSE 0 END) AS units_cancelled,
SUM(CASE WHEN oi.status IN ('Shipped', 'Processing') THEN 1 ELSE 0 END) AS units_en_route,
ROUND(SUM(CASE WHEN oi.status IN ('Returned', 'Cancelled') THEN oi.sale_price ELSE 0 END), 2) AS lost_revenue,
ROUND(SUM(CASE WHEN oi.status IN ('Returned', 'Cancelled') THEN (oi.sale_price - p.cost) ELSE 0 END), 2) AS lost_profit
FROM `bigquery-public-data.thelook_ecommerce.order_items` AS oi
JOIN `bigquery-public-data.thelook_ecommerce.orders` AS o
ON oi.order_id = o.order_id
JOIN `bigquery-public-data.thelook_ecommerce.products` AS p
ON oi.product_id = p.id
GROUP BY product_brand
),
second_layer AS (
SELECT
  *,
  ROUND((profit / NULLIF(revenue, 0)), 4) AS profit_margin,
  ROUND(units_returned / NULLIF(units_completed + units_returned, 0), 4) AS return_rate,
  ROUND(units_completed / NULLIF(unit_orders_placed - units_cancelled, 0), 4) AS completion_rate,
  ROUND(units_cancelled / NULLIF(unit_orders_placed, 0), 4) AS cancellation_rate,
  ROUND(units_en_route / NULLIF(unit_orders_placed - (units_cancelled + units_returned), 0), 4) AS en_route_rate,
  ROUND(revenue / SUM(revenue) OVER(), 7) AS revenue_share,
  ROUND(profit / SUM(profit) OVER(), 7) AS profit_share,
  ROUND(unit_orders_placed / SUM(unit_orders_placed) OVER(), 7) AS unit_orders_placed_share
FROM first_layer
)
, third_layer AS (
SELECT
  *,
  RANK() OVER(ORDER BY avg_product_sale_price DESC) AS avg_product_sale_price_rank,
  RANK() OVER(ORDER BY avg_product_cost DESC) AS avg_product_cost_rank,
  RANK() OVER(ORDER BY revenue DESC) AS revenue_rank,
  RANK() OVER(ORDER BY profit DESC) AS profit_rank,
  RANK() OVER(ORDER BY unit_orders_placed DESC) AS unit_orders_placed_rank,
  RANK() OVER(ORDER BY units_completed DESC) AS units_completed_rank,
  RANK() OVER(ORDER BY units_returned DESC) AS units_returned_rank,
  RANK() OVER(ORDER BY units_cancelled DESC) AS units_cancelled_rank,
  RANK() OVER(ORDER BY units_en_route DESC) AS units_en_route_rank,
  RANK() OVER(ORDER BY lost_revenue DESC) AS lost_revenue_rank,
  RANK() OVER(ORDER BY lost_profit DESC) AS lost_profit_rank,
  RANK() OVER(ORDER BY profit_margin DESC) AS profit_margin_rank,
  RANK() OVER(ORDER BY return_rate DESC) AS return_rate_rank,
  RANK() OVER(ORDER BY completion_rate DESC) AS completion_rate_rank,
  RANK() OVER(ORDER BY cancellation_rate DESC) AS cancellation_rate_rank,
  RANK() OVER(ORDER BY en_route_rate DESC) AS en_route_rate_rank
FROM second_layer
)
SELECT
	*
FROM third_layer
WHERE revenue_rank <= 50
ORDER BY
  profit_margin_rank DESC
LIMIT 15;
product_brand avg_product_sale_price avg_product_cost revenue profit unit_orders_placed units_completed units_returned units_cancelled units_en_route lost_revenue lost_profit profit_margin return_rate completion_rate cancellation_rate en_route_rate revenue_share profit_share unit_orders_placed_share avg_product_sale_price_rank avg_product_cost_rank revenue_rank profit_rank unit_orders_placed_rank units_completed_rank units_returned_rank units_cancelled_rank units_en_route_rank lost_revenue_rank lost_profit_rank profit_margin_rank return_rate_rank completion_rate_rank cancellation_rate_rank en_route_rate_rank
O'Neill48.3626.3212853.975838.83105626610516651912805.895826.980.45420.2830.29890.15720.66110.0047760.00418770.0058271112196640492120201921364520641275125611521592
Not Your Daughter's Jeans100.8554.7716067.867332.91527157626124712591.865739.960.45640.28310.33690.11570.61140.00597010.00525930.0029083512962632544649826138482039127376817971957
Quiksilver61.9633.327116.7612559.81171444918525882228245.9613081.140.46320.29180.30840.15050.64670.01007550.00900810.0094588076868116666771119691191112912531694
Hurley51.3627.4821510.029986.41158041716321878219406.529038.590.46430.2810.30620.1380.65220.00799220.00716240.0087185102891115191088139192319501282116814821647
Hudson175.3292.8810759.545042.672385922361219975.184637.960.46870.27160.29210.15130.67220.00399780.00361670.0013133124814957147155163147147536118901334131112411291
Wrangler42.7422.612444.435840.02128429312822064314851.876983.230.46930.3040.27540.17130.6870.00462380.00418860.0070852127211784348141514121432341880112615229291182
Joe's Jeans152.5780.5624447.2811502.216801616111234626495.0412836.040.47050.27480.28350.16470.68240.00908360.00824960.00375231631271014424352384091318611308144410791212
True Religion202.86106.2341113.0219519.178491959312643545038.9221465.470.47480.32290.26970.14840.69050.01527590.01399950.004684883515532343032303418101044157312851144
7 For All Mankind157.782.4243657.5620989.8811082719916857041942.7519952.860.48080.26760.28830.15160.67780.01622130.01505430.0061141511183419182418185517301349133612341251
Lucky Brand72.7237.9120488.79871.6310732899215753518560.058803.710.48180.24150.31550.14630.64930.00761270.00708010.005920963154817212016312120212517191590107713191673
AG Adriano Goldschmied158.5281.4515325.07390.1335396354317912419.866058.660.48220.26720.30970.12180.65090.00569410.00530030.001947914912130301008410212693404017131351112317391660
DC50.9425.9114076.316883.9296626310114845412578.256213.140.4890.27750.32150.15320.63320.00523020.00493730.0053304103699032372522222426393916281299102712191811
Volcom59.2829.9831207.3415349.94191452119227193028218.213987.510.49190.26930.31710.14160.64090.01159530.01100930.010561686880167545558816011341105814481747
Nike80.5940.3516424.088174.9952012544762757304.663876.470.49770.26040.28150.14620.68750.00610250.00586330.002869453148725285556736350767315341384146013211169
Levi's50.1625.2821140.9710560.39158341817223875520050.179823.10.49950.29150.31080.15030.64360.00785510.00757410.0087351105310191616977911181915021195111212551713

Bottom brands by Unit Orders

WITH first_layer AS (
SELECT
  p.brand AS product_brand,
  ROUND(AVG(oi.sale_price), 2) AS avg_product_sale_price,
  ROUND(AVG(p.cost), 2) AS avg_product_cost,
ROUND(SUM(CASE WHEN oi.status = 'Complete' THEN oi.sale_price ELSE 0 END), 2) AS
revenue,
ROUND(SUM(CASE WHEN oi.status = 'Complete' THEN (oi.sale_price - p.cost) ELSE 0
END), 2) AS profit,
COUNT(*) AS unit_orders_placed,
SUM(CASE WHEN oi.status = 'Complete' THEN 1 ELSE 0 END) AS units_completed,
SUM(CASE WHEN oi.status = 'Returned' THEN 1 ELSE 0 END) AS units_returned,
SUM(CASE WHEN oi.status = 'Cancelled' THEN 1 ELSE 0 END) AS units_cancelled,
SUM(CASE WHEN oi.status IN ('Shipped', 'Processing') THEN 1 ELSE 0 END) AS units_en_route,
ROUND(SUM(CASE WHEN oi.status IN ('Returned', 'Cancelled') THEN oi.sale_price ELSE 0 END), 2) AS lost_revenue,
ROUND(SUM(CASE WHEN oi.status IN ('Returned', 'Cancelled') THEN (oi.sale_price - p.cost) ELSE 0 END), 2) AS lost_profit
FROM `bigquery-public-data.thelook_ecommerce.order_items` AS oi
JOIN `bigquery-public-data.thelook_ecommerce.orders` AS o
ON oi.order_id = o.order_id
JOIN `bigquery-public-data.thelook_ecommerce.products` AS p
ON oi.product_id = p.id
GROUP BY product_brand
),
second_layer AS (
SELECT
  *,
  ROUND((profit / NULLIF(revenue, 0)), 4) AS profit_margin,
  ROUND(units_returned / NULLIF(units_completed + units_returned, 0), 4) AS return_rate,
  ROUND(units_completed / NULLIF(unit_orders_placed - units_cancelled, 0), 4) AS completion_rate,
  ROUND(units_cancelled / NULLIF(unit_orders_placed, 0), 4) AS cancellation_rate,
  ROUND(units_en_route / NULLIF(unit_orders_placed - (units_cancelled + units_returned), 0), 4) AS en_route_rate,
  ROUND(revenue / SUM(revenue) OVER(), 7) AS revenue_share,
  ROUND(profit / SUM(profit) OVER(), 7) AS profit_share,
  ROUND(unit_orders_placed / SUM(unit_orders_placed) OVER(), 7) AS unit_orders_placed_share
FROM first_layer
)
SELECT
  *,
  RANK() OVER(ORDER BY avg_product_sale_price DESC) AS avg_product_sale_price_rank,
  RANK() OVER(ORDER BY avg_product_cost DESC) AS avg_product_cost_rank,
  RANK() OVER(ORDER BY revenue DESC) AS revenue_rank,
  RANK() OVER(ORDER BY profit DESC) AS profit_rank,
  RANK() OVER(ORDER BY unit_orders_placed DESC) AS unit_orders_placed_rank,
  RANK() OVER(ORDER BY units_completed DESC) AS units_completed_rank,
  RANK() OVER(ORDER BY units_returned DESC) AS units_returned_rank,
  RANK() OVER(ORDER BY units_cancelled DESC) AS units_cancelled_rank,
  RANK() OVER(ORDER BY units_en_route DESC) AS units_en_route_rank,
  RANK() OVER(ORDER BY lost_revenue DESC) AS lost_revenue_rank,
  RANK() OVER(ORDER BY lost_profit DESC) AS lost_profit_rank,
  RANK() OVER(ORDER BY profit_margin DESC) AS profit_margin_rank,
  RANK() OVER(ORDER BY return_rate DESC) AS return_rate_rank,
  RANK() OVER(ORDER BY completion_rate DESC) AS completion_rate_rank,
  RANK() OVER(ORDER BY cancellation_rate DESC) AS cancellation_rate_rank,
  RANK() OVER(ORDER BY en_route_rate DESC) AS en_route_rate_rank
FROM second_layer
ORDER BY
  unit_orders_placed_rank DESC
LIMIT 15;
product_brand avg_product_sale_price avg_product_cost revenue profit unit_orders_placed units_completed units_returned units_cancelled units_en_route lost_revenue lost_profit profit_margin return_rate completion_rate cancellation_rate en_route_rate revenue_share profit_share unit_orders_placed_share avg_product_sale_price_rank avg_product_cost_rank revenue_rank profit_rank unit_orders_placed_rank units_completed_rank units_returned_rank units_cancelled_rank units_en_route_rank lost_revenue_rank lost_profit_rank profit_margin_rank return_rate_rank completion_rate_rank cancellation_rate_rank en_route_rate_rank
Versace128.557.70.00.010100128.570.81.00.00.00.00.05.5e-0623426525182518274225181457228427131528148225181251822842743
Hermanny62.9925.130.00.01010062.9937.861.00.00.00.00.05.5e-06796103025182518274225181457228427131945184025181251822842743
Danshuz12.05.230.00.01001012.06.771.00.00.05.5e-062529256925182518274225182066174427132439242725182624275212743
Soft-Fit19.9912.990.00.01001019.997.01.00.00.05.5e-062156184125182518274225182066174427132356242325182624275212743
Trenway Textiles5.23.285.21.92110000.00.00.36920.01.00.00.01.9e-061.4e-065.5e-062719268325082511274221142066228427132499249924952066122842713
TAIGA80.9535.210.00.01001080.9545.741.00.00.05.5e-0653062625182518274225182066174427131773172625182624275212743
NCIS18.957.880.00.0100010.00.00.00.01.00.00.05.5e-062238233525182518274225182066228425752499249925182624251822841
Steel Paisley120.048.72120.071.28110000.00.00.5940.01.00.00.04.46e-055.11e-055.5e-062643511535144827422114206622842713249924992692066122842713
marshal0.020.010.00.0100010.00.00.00.01.00.00.05.5e-062755275525182518274225182066228425752499249925182624251822841
EuroBrand14.997.320.00.01010014.997.671.00.00.00.00.05.5e-062395239325182518274225181457228427132410241125181251822842743
FREEGUN12.956.270.00.0100010.00.00.00.01.00.00.05.5e-062503247825182518274225182066228425752499249925182624251822841
Easy Expression29.9912.390.00.0100010.00.00.00.01.00.00.05.5e-061683191925182518274225182066228425752499249925182624251822841
VIP FASHION15.996.540.00.0100010.00.00.00.01.00.00.05.5e-062343245225182518274225182066228425752499249925182624251822841
Xscape46.4617.190.00.0100010.00.00.00.01.00.00.05.5e-061163149025182518274225182066228425752499249925182624251822841
C & C California44.026.580.00.02001144.017.420.00.51.00.00.01.1e-051226955251825182686251820661744257521272219251826242518191

Analytical Insights & Business Recommendations

The lowest profit margins among top-50 revenue brands are O'Neill (45.4%), Not Your Daughter's Jeans (45.6%), Quiksilver (45.6%), and Hurley (46.4%). These are overwhelmingly surf/action sports and denim brands where product costs consume a larger share of the sale price. The denim brands specifically (True Religion at 47.5%, 7 For All Mankind at 47.5%, Joe's Jeans at 47.1%, Hudson at 46.9%) all cluster in the 46–48% margin range, suggesting that denim as a product type carries higher input costs industry-wide. Given that denim margins are structurally lower, cost reduction is the primary lever. With brands like Wrangler (1,284 orders), Levi's (1,555 orders), and 7 For All Mankind (1,086 orders) driving substantial volume, negotiate volume-based supplier discounts. The order quantities provide real leverage – present suppliers with the choice of better unit pricing or reduced shelf allocation in favor of higher-margin categories.

The bottom 15 brands by unit orders all have just 1 order placed (Versace, Hermanny, Danshuz, Soft-Fit, TAIGA, NCIS, EuroBrand, FREEGUN, etc.). Most generated $0 in revenue – their only orders were returned or cancelled. These brands collectively represent dead inventory and wasted catalog space. Several of these brands (Versace with $128.50 avg price, TAIGA at $80.95, Steel Paisley at $120.00) carry higher price points, meaning each failed order ties up more capital in unsold inventory. Brands with fewer than 5 lifetime orders and $0 completed revenue should be evaluated for removal. Maintaining supplier relationships, inventory allocations, and product listings for brands that generate no revenue is a net drain on operational resources. Consider stopping deals with these underperforming brands to free up bandwidth and inventory space for proven performers. These brands may also be negatively affecting the company's reputation if customers encounter low-quality products from unknown suppliers.

Some bottom-volume brands show strong margins and clean loss profiles when they do complete sales. VIPARO (12 orders, $759.80 revenue, 54.5% margin, 0 returns) and Fisherman (9 orders, $596 revenue, 52.6% margin, 0 returns) demonstrate that small brands can perform well when their products connect with buyers. Rather than dropping all low-volume brands indiscriminately, identify the ones with strong margins, zero returns, and reasonable completion rates. These brands may be underperforming due to lack of visibility rather than product quality issues. Targeted promotion through category-specific advertising or "featured new brand" placements could surface these hidden gems to a wider audience and test whether increased exposure drives proportional sales growth.

Top Categories

Top categories by Revenue

WITH first_layer AS (
SELECT
  p.category AS product_category,
  ROUND(AVG(oi.sale_price), 2) AS avg_product_sale_price,
  ROUND(AVG(p.cost), 2) AS avg_product_cost,
ROUND(SUM(CASE WHEN oi.status = 'Complete' THEN oi.sale_price ELSE 0 END), 2) AS
revenue,
ROUND(SUM(CASE WHEN oi.status = 'Complete' THEN (oi.sale_price - p.cost) ELSE 0
END), 2) AS profit,
COUNT(*) AS unit_orders_placed,
SUM(CASE WHEN oi.status = 'Complete' THEN 1 ELSE 0 END) AS units_completed,
SUM(CASE WHEN oi.status = 'Returned' THEN 1 ELSE 0 END) AS units_returned,
SUM(CASE WHEN oi.status = 'Cancelled' THEN 1 ELSE 0 END) AS units_cancelled,
SUM(CASE WHEN oi.status IN ('Shipped', 'Processing') THEN 1 ELSE 0 END) AS units_en_route,
ROUND(SUM(CASE WHEN oi.status IN ('Returned', 'Cancelled') THEN oi.sale_price ELSE 0 END), 2) AS lost_revenue,
ROUND(SUM(CASE WHEN oi.status IN ('Returned', 'Cancelled') THEN (oi.sale_price - p.cost) ELSE 0 END), 2) AS lost_profit
FROM `bigquery-public-data.thelook_ecommerce.order_items` AS oi
JOIN `bigquery-public-data.thelook_ecommerce.orders` AS o
ON oi.order_id = o.order_id
JOIN `bigquery-public-data.thelook_ecommerce.products` AS p
ON oi.product_id = p.id
GROUP BY product_category
),
second_layer AS (
SELECT
  *,
  ROUND((profit / NULLIF(revenue, 0)), 4) AS profit_margin,
  ROUND(units_returned / NULLIF(units_completed + units_returned, 0), 4) AS return_rate,
  ROUND(units_completed / NULLIF(unit_orders_placed - units_cancelled, 0), 4) AS completion_rate,
  ROUND(units_cancelled / NULLIF(unit_orders_placed, 0), 4) AS cancellation_rate,
  ROUND(units_en_route / NULLIF(unit_orders_placed - (units_cancelled + units_returned), 0), 4) AS en_route_rate,
  ROUND(revenue / SUM(revenue) OVER(), 7) AS revenue_share,
  ROUND(profit / SUM(profit) OVER(), 7) AS profit_share,
  ROUND(unit_orders_placed / SUM(unit_orders_placed) OVER(), 7) AS unit_orders_placed_share
FROM first_layer
)
SELECT
  *,
  RANK() OVER(ORDER BY avg_product_sale_price DESC) AS avg_product_sale_price_rank,
  RANK() OVER(ORDER BY avg_product_cost DESC) AS avg_product_cost_rank,
  RANK() OVER(ORDER BY revenue DESC) AS revenue_rank,
  RANK() OVER(ORDER BY profit DESC) AS profit_rank,
  RANK() OVER(ORDER BY unit_orders_placed DESC) AS unit_orders_placed_rank,
  RANK() OVER(ORDER BY units_completed DESC) AS units_completed_rank,
  RANK() OVER(ORDER BY units_returned DESC) AS units_returned_rank,
  RANK() OVER(ORDER BY units_cancelled DESC) AS units_cancelled_rank,
  RANK() OVER(ORDER BY units_en_route DESC) AS units_en_route_rank,
  RANK() OVER(ORDER BY lost_revenue DESC) AS lost_revenue_rank,
  RANK() OVER(ORDER BY lost_profit DESC) AS lost_profit_rank,
  RANK() OVER(ORDER BY profit_margin DESC) AS profit_margin_rank,
  RANK() OVER(ORDER BY return_rate DESC) AS return_rate_rank,
  RANK() OVER(ORDER BY completion_rate DESC) AS completion_rate_rank,
  RANK() OVER(ORDER BY cancellation_rate DESC) AS cancellation_rate_rank,
  RANK() OVER(ORDER BY en_route_rate DESC) AS en_route_rate_rank
FROM second_layer
ORDER BY
  revenue_rank ASC
LIMIT 15;
product_category avg_product_sale_price avg_product_cost revenue profit unit_orders_placed units_completed units_returned units_cancelled units_en_route lost_revenue lost_profit profit_margin return_rate completion_rate cancellation_rate en_route_rate revenue_share profit_share unit_orders_placed_share avg_product_sale_price_rank avg_product_cost_rank revenue_rank profit_rank unit_orders_placed_rank units_completed_rank units_returned_rank units_cancelled_rank units_en_route_rank lost_revenue_rank lost_profit_rank profit_margin_rank return_rate_rank completion_rate_rank cancellation_rate_rank en_route_rate_rank
Outerwear & Coats146.2965.02339222.29188050.569028230886213184540322743.18179542.920.55440.27190.29940.1460.6630.12604080.13487350.0498171121110101111101182642319
Jeans97.7652.34308764.08143520.48126553169130319556228319052.52148299.490.46480.29140.29620.15450.66280.11472380.10293570.0698311442222222222199320
Sweaters75.4636.32213600.63110714.83110782792108116885517208115.59107697.320.51830.27910.29730.15240.6640.07936510.07940680.06112918733768683312226818
Swim57.228.98156523.776716.71112462772114316605671159217.2478510.830.49010.2920.28920.14760.67170.05815770.05502270.06205611010455757565167172210
Fashion Hoodies & Sweatshirts54.0228.09155933.074918.07117372951119117145881159794.5376980.630.48050.28750.29440.1460.66590.05793820.05373270.064765512115644444561714122314
Suits & Sport Coats124.7450.03153543.4592034.55517612554867902645160577.1596066.370.59940.27910.28610.15260.67820.05705030.0660090.028561525641616171616442222352
Shorts47.2923.69136510.8268155.43111762819113016905537134644.767078.360.49930.28610.29720.15120.66260.05072170.04888240.06166991714796565778141571021
Sleep & Lounge48.7923.64132101.268241.52110712737112816455561134573.4168950.320.51660.29180.29040.14860.67020.04908330.04894410.06109051615888878687138151512
Tops & Tees40.9722.93121151.8953364.7120002960129217835965123378.8254313.770.44050.30390.28970.14860.66830.0450150.03827420.0662168201691433333913222161513
Intimates33.7517.96118381.255321.28134233393132920446657112421.9752618.740.46730.28140.29820.15230.66240.04398550.03967750.0740692221101311111121420195923
Active50.9421.35117645.4568332.268932218093813624452113272.8966015.460.58080.30080.2880.15250.67130.04371210.04900920.0492873151811711111010111096421711
Dresses84.2437.9112895.2462082.56535813165497922701113022.0262283.440.54990.29440.28820.14780.67240.04194710.04452680.0295658761210151515151511109620219
Pants59.6527.35106719.757634.87239182371310763627106167.8257611.260.54010.28120.29580.14860.66550.03965260.04133680.03994539121312131313131313121021101516
Accessories42.0516.8599096.9659262.839813238496714974965103385.562000.280.5980.28860.28670.15260.67560.03682030.04250440.0541488192214119999914115122255
Blazers & Jackets90.6834.3565986.3140954.923194745334506160976039.5147305.10.62070.30950.27720.15840.68350.02451780.02937370.017624758151522222220211515112611

Top categories by Profit Margin

WITH first_layer AS (
SELECT
  p.category AS product_category,
  ROUND(AVG(oi.sale_price), 2) AS avg_product_sale_price,
  ROUND(AVG(p.cost), 2) AS avg_product_cost,
ROUND(SUM(CASE WHEN oi.status = 'Complete' THEN oi.sale_price ELSE 0 END), 2) AS
revenue,
ROUND(SUM(CASE WHEN oi.status = 'Complete' THEN (oi.sale_price - p.cost) ELSE 0
END), 2) AS profit,
COUNT(*) AS unit_orders_placed,
SUM(CASE WHEN oi.status = 'Complete' THEN 1 ELSE 0 END) AS units_completed,
SUM(CASE WHEN oi.status = 'Returned' THEN 1 ELSE 0 END) AS units_returned,
SUM(CASE WHEN oi.status = 'Cancelled' THEN 1 ELSE 0 END) AS units_cancelled,
SUM(CASE WHEN oi.status IN ('Shipped', 'Processing') THEN 1 ELSE 0 END) AS units_en_route,
ROUND(SUM(CASE WHEN oi.status IN ('Returned', 'Cancelled') THEN oi.sale_price ELSE 0 END), 2) AS lost_revenue,
ROUND(SUM(CASE WHEN oi.status IN ('Returned', 'Cancelled') THEN (oi.sale_price - p.cost) ELSE 0 END), 2) AS lost_profit
FROM `bigquery-public-data.thelook_ecommerce.order_items` AS oi
JOIN `bigquery-public-data.thelook_ecommerce.orders` AS o
ON oi.order_id = o.order_id
JOIN `bigquery-public-data.thelook_ecommerce.products` AS p
ON oi.product_id = p.id
GROUP BY product_category
),
second_layer AS (
SELECT
  *,
  ROUND((profit / NULLIF(revenue, 0)), 4) AS profit_margin,
  ROUND(units_returned / NULLIF(units_completed + units_returned, 0), 4) AS return_rate,
  ROUND(units_completed / NULLIF(unit_orders_placed - units_cancelled, 0), 4) AS completion_rate,
  ROUND(units_cancelled / NULLIF(unit_orders_placed, 0), 4) AS cancellation_rate,
  ROUND(units_en_route / NULLIF(unit_orders_placed - (units_cancelled + units_returned), 0), 4) AS en_route_rate,
  ROUND(revenue / SUM(revenue) OVER(), 7) AS revenue_share,
  ROUND(profit / SUM(profit) OVER(), 7) AS profit_share,
  ROUND(unit_orders_placed / SUM(unit_orders_placed) OVER(), 7) AS unit_orders_placed_share
FROM first_layer
)
SELECT
  *,
  RANK() OVER(ORDER BY avg_product_sale_price DESC) AS avg_product_sale_price_rank,
  RANK() OVER(ORDER BY avg_product_cost DESC) AS avg_product_cost_rank,
  RANK() OVER(ORDER BY revenue DESC) AS revenue_rank,
  RANK() OVER(ORDER BY profit DESC) AS profit_rank,
  RANK() OVER(ORDER BY unit_orders_placed DESC) AS unit_orders_placed_rank,
  RANK() OVER(ORDER BY units_completed DESC) AS units_completed_rank,
  RANK() OVER(ORDER BY units_returned DESC) AS units_returned_rank,
  RANK() OVER(ORDER BY units_cancelled DESC) AS units_cancelled_rank,
  RANK() OVER(ORDER BY units_en_route DESC) AS units_en_route_rank,
  RANK() OVER(ORDER BY lost_revenue DESC) AS lost_revenue_rank,
  RANK() OVER(ORDER BY lost_profit DESC) AS lost_profit_rank,
  RANK() OVER(ORDER BY profit_margin DESC) AS profit_margin_rank,
  RANK() OVER(ORDER BY return_rate DESC) AS return_rate_rank,
  RANK() OVER(ORDER BY completion_rate DESC) AS completion_rate_rank,
  RANK() OVER(ORDER BY cancellation_rate DESC) AS cancellation_rate_rank,
  RANK() OVER(ORDER BY en_route_rate DESC) AS en_route_rate_rank
FROM second_layer
ORDER BY
  profit_margin_rank ASC
LIMIT 15;
product_category avg_product_sale_price avg_product_cost revenue profit unit_orders_placed units_completed units_returned units_cancelled units_en_route lost_revenue lost_profit profit_margin return_rate completion_rate cancellation_rate en_route_rate revenue_share profit_share unit_orders_placed_share avg_product_sale_price_rank avg_product_cost_rank revenue_rank profit_rank unit_orders_placed_rank units_completed_rank units_returned_rank units_cancelled_rank units_en_route_rank lost_revenue_rank lost_profit_rank profit_margin_rank return_rate_rank completion_rate_rank cancellation_rate_rank en_route_rate_rank
Blazers & Jackets90.6834.3565986.3140954.923194745334506160976039.5147305.10.62070.30950.27720.15840.68350.02451780.02937370.017624758151522222220211515112611
Suits & Sport Coats124.7450.03153543.4592034.55517612554867902645160577.1596066.370.59940.27910.28610.15260.67820.05705030.0660090.028561525641616171616442222352
Socks & Hosiery16.816.7515695.279398.633821929372566195415784.169453.90.59880.28590.28540.14810.67780.00583170.00674090.0210845262624231919191919242331624203
Skirts52.1320.826843.4216061.82087539208314102627751.2116709.530.59840.27840.3040.15050.65560.00997390.01151980.0115162131922202323232323222042421125
Accessories42.0516.8599096.9659262.839813238496714974965103385.562000.280.5980.28860.28670.15260.67560.03682030.04250440.0541488192214119999914115122255
Active50.9421.35117645.4568332.268932218093813624452113272.8966015.460.58080.30080.2880.15250.67130.04371210.04900920.0492873151811711111010111096421711
Maternity51.522.7363613.635563.7650861232531741258261413.1834274.780.55910.30120.28350.14570.6770.02363620.0255070.028064914171616171716171716167325254
Outerwear & Coats146.2965.02339222.29188050.569028230886213184540322743.18179542.920.55440.27190.29940.1460.6630.12604080.13487350.0498171121110101111101182642319
Dresses84.2437.9112895.2462082.56535813165497922701113022.0262283.440.54990.29440.28820.14780.67240.04194710.04452680.0295658761210151515151511109620219
Pants59.6527.35106719.757634.87239182371310763627106167.8257611.260.54010.28120.29580.14860.66550.03965260.04133680.03994539121312131313131313121021101516
Underwear27.2112.7950614.626861.36750518867381122375951345.0627197.180.53070.28130.29550.14950.66590.01880630.01926550.041413123241717121212121217171120111314
Sweaters75.4636.32213600.63110714.83110782792108116885517208115.59107697.320.51830.27910.29730.15240.6640.07936510.07940680.06112918733768683312226818
Sleep & Lounge48.7923.64132101.268241.52110712737112816455561134573.4168950.320.51660.29180.29040.14860.67020.04908330.04894410.06109051615888878687138151512
Shorts47.2923.69136510.8268155.43111762819113016905537134644.767078.360.49930.28610.29720.15120.66260.05072170.04888240.06166991714796565778141571021
Plus39.4719.8444807.0122316.6843581070436646220642048.6421041.570.49810.28950.28830.14820.67340.01664840.0160060.02404772120191918181818181818151119196

Top categories by Return Rate

WITH first_layer AS (
SELECT
  p.category AS product_category,
  ROUND(AVG(oi.sale_price), 2) AS avg_product_sale_price,
  ROUND(AVG(p.cost), 2) AS avg_product_cost,
ROUND(SUM(CASE WHEN oi.status = 'Complete' THEN oi.sale_price ELSE 0 END), 2) AS
revenue,
ROUND(SUM(CASE WHEN oi.status = 'Complete' THEN (oi.sale_price - p.cost) ELSE 0
END), 2) AS profit,
COUNT(*) AS unit_orders_placed,
SUM(CASE WHEN oi.status = 'Complete' THEN 1 ELSE 0 END) AS units_completed,
SUM(CASE WHEN oi.status = 'Returned' THEN 1 ELSE 0 END) AS units_returned,
SUM(CASE WHEN oi.status = 'Cancelled' THEN 1 ELSE 0 END) AS units_cancelled,
SUM(CASE WHEN oi.status IN ('Shipped', 'Processing') THEN 1 ELSE 0 END) AS units_en_route,
ROUND(SUM(CASE WHEN oi.status IN ('Returned', 'Cancelled') THEN oi.sale_price ELSE 0 END), 2) AS lost_revenue,
ROUND(SUM(CASE WHEN oi.status IN ('Returned', 'Cancelled') THEN (oi.sale_price - p.cost) ELSE 0 END), 2) AS lost_profit
FROM `bigquery-public-data.thelook_ecommerce.order_items` AS oi
JOIN `bigquery-public-data.thelook_ecommerce.orders` AS o
ON oi.order_id = o.order_id
JOIN `bigquery-public-data.thelook_ecommerce.products` AS p
ON oi.product_id = p.id
GROUP BY product_category
),
second_layer AS (
SELECT
  *,
  ROUND((profit / NULLIF(revenue, 0)), 4) AS profit_margin,
  ROUND(units_returned / NULLIF(units_completed + units_returned, 0), 4) AS return_rate,
  ROUND(units_completed / NULLIF(unit_orders_placed - units_cancelled, 0), 4) AS completion_rate,
  ROUND(units_cancelled / NULLIF(unit_orders_placed, 0), 4) AS cancellation_rate,
  ROUND(units_en_route / NULLIF(unit_orders_placed - (units_cancelled + units_returned), 0), 4) AS en_route_rate,
  ROUND(revenue / SUM(revenue) OVER(), 7) AS revenue_share,
  ROUND(profit / SUM(profit) OVER(), 7) AS profit_share,
  ROUND(unit_orders_placed / SUM(unit_orders_placed) OVER(), 7) AS unit_orders_placed_share
FROM first_layer
)
SELECT
  *,
  RANK() OVER(ORDER BY avg_product_sale_price DESC) AS avg_product_sale_price_rank,
  RANK() OVER(ORDER BY avg_product_cost DESC) AS avg_product_cost_rank,
  RANK() OVER(ORDER BY revenue DESC) AS revenue_rank,
  RANK() OVER(ORDER BY profit DESC) AS profit_rank,
  RANK() OVER(ORDER BY unit_orders_placed DESC) AS unit_orders_placed_rank,
  RANK() OVER(ORDER BY units_completed DESC) AS units_completed_rank,
  RANK() OVER(ORDER BY units_returned DESC) AS units_returned_rank,
  RANK() OVER(ORDER BY units_cancelled DESC) AS units_cancelled_rank,
  RANK() OVER(ORDER BY units_en_route DESC) AS units_en_route_rank,
  RANK() OVER(ORDER BY lost_revenue DESC) AS lost_revenue_rank,
  RANK() OVER(ORDER BY lost_profit DESC) AS lost_profit_rank,
  RANK() OVER(ORDER BY profit_margin DESC) AS profit_margin_rank,
  RANK() OVER(ORDER BY return_rate DESC) AS return_rate_rank,
  RANK() OVER(ORDER BY completion_rate DESC) AS completion_rate_rank,
  RANK() OVER(ORDER BY cancellation_rate DESC) AS cancellation_rate_rank,
  RANK() OVER(ORDER BY en_route_rate DESC) AS en_route_rate_rank
FROM second_layer
ORDER BY
  return_rate_rank ASC
LIMIT 15;
product_category avg_product_sale_price avg_product_cost revenue profit unit_orders_placed units_completed units_returned units_cancelled units_en_route lost_revenue lost_profit profit_margin return_rate completion_rate cancellation_rate en_route_rate revenue_share profit_share unit_orders_placed_share avg_product_sale_price_rank avg_product_cost_rank revenue_rank profit_rank unit_orders_placed_rank units_completed_rank units_returned_rank units_cancelled_rank units_en_route_rank lost_revenue_rank lost_profit_rank profit_margin_rank return_rate_rank completion_rate_rank cancellation_rate_rank en_route_rate_rank
Blazers & Jackets90.6834.3565986.3140954.923194745334506160976039.5147305.10.62070.30950.27720.15840.68350.02451780.02937370.017624758151522222220211515112611
Tops & Tees40.9722.93121151.8953364.7120002960129217835965123378.8254313.770.44050.30390.28970.14860.66830.0450150.03827420.0662168201691433333913222161513
Maternity51.522.7363613.635563.7650861232531741258261413.1834274.780.55910.30120.28350.14570.6770.02363620.0255070.028064914171616171716171716167325254
Active50.9421.35117645.4568332.268932218093813624452113272.8966015.460.58080.30080.2880.15250.67130.04371210.04900920.0492873151811711111010111096421711
Leggings26.7916.0722032.868796.323246804345500159722344.18926.780.39920.30030.29280.1540.66510.00818650.00630890.0179116242323242121212122232423513417
Dresses84.2437.9112895.2462082.56535813165497922701113022.0262283.440.54990.29440.28820.14780.67240.04194710.04452680.0295658761210151515151511109620219
Swim57.228.98156523.776716.71112462772114316605671159217.2478510.830.49010.2920.28920.14760.67170.05815770.05502270.06205611010455757565167172210
Sleep & Lounge48.7923.64132101.268241.52110712737112816455561134573.4168950.320.51660.29180.29040.14860.67020.04908330.04894410.06109051615888878687138151512
Jeans97.7652.34308764.08143520.48126553169130319556228319052.52148299.490.46480.29140.29620.15450.66280.11472380.10293570.0698311442222222222199320
Socks21.1312.7631572.0712517.4463291557636939319732927.5913032.110.39650.290.28890.14840.67250.01173090.00897770.03492382525212214141414142021241018188
Plus39.4719.8444807.0122316.6843581070436646220642048.6421041.570.49810.28950.28830.14820.67340.01664840.0160060.02404772120191918181818181818151119196
Accessories42.0516.8599096.9659262.839813238496714974965103385.562000.280.5980.28860.28670.15260.67560.03682030.04250440.0541488192214119999914115122255
Pants & Capris55.3729.249331.5223421.933392864350481169741999.8619777.560.47480.28830.29680.14180.66260.01832950.01679870.0187173119181820202022201919181382621
Fashion Hoodies & Sweatshirts54.0228.09155933.074918.07117372951119117145881159794.5376980.630.48050.28750.29440.1460.66590.05793820.05373270.064765512115644444561714122314
Shorts47.2923.69136510.8268155.43111762819113016905537134644.767078.360.49930.28610.29720.15120.66260.05072170.04888240.06166991714796565778141571021

Analytical Insights & Business Recommendations

Outerwear & Coats is the clear category leader with $339,222.29 in revenue and $188,050.56 in profit – both #1 overall. However, it achieves this with only 9,028 unit orders (rank #10), meaning it generates far more revenue per unit than any other category thanks to its $146.29 average sale price, the highest across all 26 categories. With a 55.4% profit margin, Outerwear & Coats also ranks above the median for margin efficiency. Its return rate of 27.2% is actually the lowest among all categories, suggesting that customers purchasing outerwear are more deliberate and satisfied with their purchases. Outerwear is the profit engine of the business. Increase internal inventory allocation, marketing spend, and priority fulfillment resources for this category. Ensure stockouts are prevented – each lost outerwear sale costs an average of $146.29 in revenue and $81.30 in profit, far exceeding the cost of overstocking. Additionally, this category's demand likely peaks seasonally before and during winter months, so inventory orders should be front-loaded accordingly.

Intimates leads all categories in unit orders (13,423) but ranks #10 in revenue ($118,381.20) due to its low average sale price of $33.75. Conversely, Suits & Sport Coats ranks #16 in unit orders (5,176) but #4 in profit ($92,034.55) thanks to its $124.74 average sale price and 59.9% profit margin. This pattern – high-volume/low-revenue vs. low-volume/high-revenue – is consistent across the category landscape. Tops & Tees, Intimates, and Fashion Hoodies move the most units but contribute less to profit per order. For high-volume, low-revenue categories (Intimates, Tops & Tees, Shorts), operational efficiency is paramount. Streamline fulfillment for these items – batch picking, simplified packaging, automated label generation – since the margin per unit is thin and any fulfillment inefficiency eats into profit. For low-volume, high-revenue categories (Suits & Sport Coats, Outerwear), invest in premium fulfillment and quality packaging to protect the customer experience on high-value purchases.

Blazers & Jackets commands the highest profit margin (62.1%) across all categories, despite ranking only #15 in revenue and #22 in unit orders. This means every dollar of blazer revenue retains $0.62 in profit – nearly 50% more efficient than bottom-margin categories like Socks (39.7%) or Clothing Sets (38.5%). Accessories (59.8% margin), Socks & Hosiery (59.9%), and Suits & Sport Coats (59.9%) form a tier of high-margin categories. Notably, Socks & Hosiery achieves a top-3 margin despite the lowest average sale price ($16.81) – meaning the cost-to-price ratio is extremely favorable even at low price points. Strategically promote high-margin categories through targeted advertising. A $1 increase in Blazers & Jackets demand yields $0.62 in profit vs. $0.44 for Tops & Tees. Cross-sell blazers and accessories when customers are browsing jeans or outerwear. For Socks & Hosiery, the near-60% margin on a $16 product suggests significant untapped potential if volume can be increased – consider featuring them as add-on recommendations at checkout.

Category return rates are remarkably tight, ranging from 27.2% (Outerwear & Coats) to 31.0% (Blazers & Jackets). The ~4 percentage point spread across all 26 categories suggests that returns are driven more by systemic business factors (e.g., return policy leniency, shipping delays, overall site UX) than by category-specific product quality. Blazers & Jackets has both the highest margin (62.1%) and the highest return rate (31.0%), which may seem contradictory but reflects the category's nature – fit-dependent items where customers may order multiple sizes. Since return rates are uniformly high across all categories (all above 27%), invest in platform-wide return reduction strategies rather than category-specific ones: improved sizing tools, better product photography, clearer product descriptions, and potentially a try-before-you-buy or virtual fitting room feature. A 2-point reduction in the business-wide return rate would compound into significant recovered revenue across all categories.

Bottom Categories

Bottom categories by Revenue

WITH first_layer AS (
SELECT
  p.category AS product_category,
  ROUND(AVG(oi.sale_price), 2) AS avg_product_sale_price,
  ROUND(AVG(p.cost), 2) AS avg_product_cost,
ROUND(SUM(CASE WHEN oi.status = 'Complete' THEN oi.sale_price ELSE 0 END), 2) AS
revenue,
ROUND(SUM(CASE WHEN oi.status = 'Complete' THEN (oi.sale_price - p.cost) ELSE 0
END), 2) AS profit,
COUNT(*) AS unit_orders_placed,
SUM(CASE WHEN oi.status = 'Complete' THEN 1 ELSE 0 END) AS units_completed,
SUM(CASE WHEN oi.status = 'Returned' THEN 1 ELSE 0 END) AS units_returned,
SUM(CASE WHEN oi.status = 'Cancelled' THEN 1 ELSE 0 END) AS units_cancelled,
SUM(CASE WHEN oi.status IN ('Shipped', 'Processing') THEN 1 ELSE 0 END) AS units_en_route,
ROUND(SUM(CASE WHEN oi.status IN ('Returned', 'Cancelled') THEN oi.sale_price ELSE 0 END), 2) AS lost_revenue,
ROUND(SUM(CASE WHEN oi.status IN ('Returned', 'Cancelled') THEN (oi.sale_price - p.cost) ELSE 0 END), 2) AS lost_profit
FROM `bigquery-public-data.thelook_ecommerce.order_items` AS oi
JOIN `bigquery-public-data.thelook_ecommerce.orders` AS o
ON oi.order_id = o.order_id
JOIN `bigquery-public-data.thelook_ecommerce.products` AS p
ON oi.product_id = p.id
GROUP BY product_category
),
second_layer AS (
SELECT
  *,
  ROUND((profit / NULLIF(revenue, 0)), 4) AS profit_margin,
  ROUND(units_returned / NULLIF(units_completed + units_returned, 0), 4) AS return_rate,
  ROUND(units_completed / NULLIF(unit_orders_placed - units_cancelled, 0), 4) AS completion_rate,
  ROUND(units_cancelled / NULLIF(unit_orders_placed, 0), 4) AS cancellation_rate,
  ROUND(units_en_route / NULLIF(unit_orders_placed - (units_cancelled + units_returned), 0), 4) AS en_route_rate,
  ROUND(revenue / SUM(revenue) OVER(), 7) AS revenue_share,
  ROUND(profit / SUM(profit) OVER(), 7) AS profit_share,
  ROUND(unit_orders_placed / SUM(unit_orders_placed) OVER(), 7) AS unit_orders_placed_share
FROM first_layer
)
SELECT
  *,
  RANK() OVER(ORDER BY avg_product_sale_price DESC) AS avg_product_sale_price_rank,
  RANK() OVER(ORDER BY avg_product_cost DESC) AS avg_product_cost_rank,
  RANK() OVER(ORDER BY revenue DESC) AS revenue_rank,
  RANK() OVER(ORDER BY profit DESC) AS profit_rank,
  RANK() OVER(ORDER BY unit_orders_placed DESC) AS unit_orders_placed_rank,
  RANK() OVER(ORDER BY units_completed DESC) AS units_completed_rank,
  RANK() OVER(ORDER BY units_returned DESC) AS units_returned_rank,
  RANK() OVER(ORDER BY units_cancelled DESC) AS units_cancelled_rank,
  RANK() OVER(ORDER BY units_en_route DESC) AS units_en_route_rank,
  RANK() OVER(ORDER BY lost_revenue DESC) AS lost_revenue_rank,
  RANK() OVER(ORDER BY lost_profit DESC) AS lost_profit_rank,
  RANK() OVER(ORDER BY profit_margin DESC) AS profit_margin_rank,
  RANK() OVER(ORDER BY return_rate DESC) AS return_rate_rank,
  RANK() OVER(ORDER BY completion_rate DESC) AS completion_rate_rank,
  RANK() OVER(ORDER BY cancellation_rate DESC) AS cancellation_rate_rank,
  RANK() OVER(ORDER BY en_route_rate DESC) AS en_route_rate_rank
FROM second_layer
ORDER BY
  revenue_rank DESC
LIMIT 15;
product_category avg_product_sale_price avg_product_cost revenue profit unit_orders_placed units_completed units_returned units_cancelled units_en_route lost_revenue lost_profit profit_margin return_rate completion_rate cancellation_rate en_route_rate revenue_share profit_share unit_orders_placed_share avg_product_sale_price_rank avg_product_cost_rank revenue_rank profit_rank unit_orders_placed_rank units_completed_rank units_returned_rank units_cancelled_rank units_en_route_rank lost_revenue_rank lost_profit_rank profit_margin_rank return_rate_rank completion_rate_rank cancellation_rate_rank en_route_rate_rank
Clothing Sets85.8252.95539.462131.982216024351024604.361726.010.38490.28570.32260.15840.62960.00205820.00152910.00121956326262626262626262626171126
Jumpsuits & Rompers46.7924.8310339.764897.93929230861394749496.984463.250.47370.27220.29110.14960.67330.00384180.00351290.00512631813252525252525252525192514127
Socks & Hosiery16.816.7515695.279398.633821929372566195415784.169453.90.59880.28590.28540.14810.67780.00583170.00674090.0210845262624231919191919242331624203
Leggings26.7916.0722032.868796.323246804345500159722344.18926.780.39920.30030.29280.1540.66510.00818650.00630890.0179116242323242121212122232423513417
Skirts52.1320.826843.4216061.82087539208314102627751.2116709.530.59840.27840.3040.15050.65560.00997390.01151980.0115162131922202323232323222042421125
Socks21.1312.7631572.0712517.4463291557636939319732927.5913032.110.39650.290.28890.14840.67250.01173090.00897770.03492382525212214141414142021241018188
Suits117.370.9632903.2413000.36112328711316755632368.4712778.140.39510.28250.30020.14870.65950.01222550.00932410.006196831202124242424242122251831424
Plus39.4719.8444807.0122316.6843581070436646220642048.6421041.570.49810.28950.28830.14820.67340.01664840.0160060.02404772120191918181818181818151119196
Pants & Capris55.3729.249331.5223421.933392864350481169741999.8619777.560.47480.28830.29680.14180.66260.01832950.01679870.0187173119181820202022201919181382621
Underwear27.2112.7950614.626861.36750518867381122375951345.0627197.180.53070.28130.29550.14950.66590.01880630.01926550.041413123241717121212121217171120111314
Maternity51.522.7363613.635563.7650861232531741258261413.1834274.780.55910.30120.28350.14570.6770.02363620.0255070.028064914171616171716171716167325254
Blazers & Jackets90.6834.3565986.3140954.923194745334506160976039.5147305.10.62070.30950.27720.15840.68350.02451780.02937370.017624758151522222220211515112611
Accessories42.0516.8599096.9659262.839813238496714974965103385.562000.280.5980.28860.28670.15260.67560.03682030.04250440.0541488192214119999914115122255
Pants59.6527.35106719.757634.87239182371310763627106167.8257611.260.54010.28120.29580.14860.66550.03965260.04133680.03994539121312131313131313121021101516
Dresses84.2437.9112895.2462082.56535813165497922701113022.0262283.440.54990.29440.28820.14780.67240.04194710.04452680.0295658761210151515151511109620219

Analytical Insights & Business Recommendations

Clothing Sets is the worst-performing category across nearly every metric: #26 in revenue ($5,539.46), #26 in profit ($2,131.98), #26 in unit orders (221), and notably has the highest cancellation rate (15.8%) and highest completion rate (32.3% – meaning orders that survive cancellation tend to complete). The combination of an $85.82 average sale price with a $52.90 cost leaves a margin of only 38.5%, the lowest of all 26 categories.

Clothing Sets should be considered for discontinuation or dramatic restructuring. With the lowest profit margin, fewest orders, and highest cancellation rate in the business, this category consumes disproportionate operational resources relative to its contribution. If the category is retained, its product cost structure ($52.90 avg cost on an $85.82 price) needs renegotiation – the cost-to-price ratio is over 61%, far above the business average.

Suits rank #24 in unit orders (1,123) and #21 in profit ($13,000.36) despite having the highest average product cost ($70.96) and third-highest average sale price ($117.30). The resulting profit margin of 39.5% is second-lowest, meaning the premium pricing doesn't translate to premium profitability. This is a category where high input costs (likely driven by fabric quality and construction complexity) compress margins despite strong retail pricing. The 28.3% return rate is moderate, so the margin issue is cost-driven rather than return-driven.

Investigate supplier cost structures for the Suits category. At $70.96 average cost, Suits products consume nearly 60.5% of revenue in input costs – compared to 44.5% for Outerwear & Coats, which has an even higher average sale price. Consider whether a shift to suppliers offering better cost-to-quality ratios could preserve the product's market positioning while improving margins toward the 50%+ range.

Socks (6,329 orders, 39.7% margin) and Leggings (3,246 orders, 39.9% margin) represent high-volume categories that contribute minimally to profit due to structurally low margins. Socks generate $31,572.07 in revenue but only $12,517.44 in profit, while Leggings generate $22,032.86 revenue with $8,796.32 profit. Both categories have average costs that consume ~60% of sale price ($12.76/$21.13 for Socks; $16.07/$26.79 for Leggings), leaving thin absolute profit per unit.

Rather than dropping these categories (they drive significant order volume which may increase basket size through cross-selling), optimize their fulfillment costs. Socks and leggings are lightweight, compact items ideal for low-cost shipping. Consider offering multi-pack deals – a 3-pack of socks at a slight per-unit discount still generates more total profit than a single pair while reducing per-order shipping costs.

The smallest categories by order volume – Clothing Sets (221), Jumpsuits & Rompers (929), Suits (1,123) – generate relatively few transactions while requiring full catalog management, supplier relationships, and inventory allocation. Evaluate whether the smallest categories justify their operational overhead. Clothing Sets' 221 orders represent just 0.12% of total order volume. If maintaining supplier relationships, inventory space, and marketing for this category costs more than the $2,131.98 in profit it generates, the category should be wound down or consolidated into a broader category (e.g., merged into Active or Outerwear depending on product types).

Long Term Trends

Long Term Trend: Total Revenue and Profit

SELECT
	DATE_TRUNC(DATE(o.created_at), MONTH) AS month,
	SUM(oi.sale_price) AS revenue,
	SUM(oi.sale_price - p.cost) AS profit
FROM `bigquery-public-data.thelook_ecommerce.order_items` AS oi
JOIN `bigquery-public-data.thelook_ecommerce.orders` AS o
ON oi.order_id = o.order_id
JOIN `bigquery-public-data.thelook_ecommerce.products` AS p
ON oi.product_id = p.id
WHERE oi.status = 'Complete'
GROUP BY month
ORDER BY month;
Long term trend chart showing monthly total revenue and profit over time
Monthly total revenue and profit over the full date range. Open full-size

Long Term Trend: Units Sold

SELECT
	DATE_TRUNC(DATE(o.created_at), MONTH) AS month,
	COUNT(*) AS units_sold
FROM `bigquery-public-data.thelook_ecommerce.order_items` AS oi
JOIN `bigquery-public-data.thelook_ecommerce.orders` AS o
ON oi.order_id = o.order_id
WHERE oi.status = 'Complete'
GROUP BY month
ORDER BY month;
Long term trend chart showing monthly units sold over time
Monthly units sold over the full date range. Open full-size

Long Term Trend: Profit Margin

WITH metrics AS (
	SELECT
		DATE_TRUNC(DATE(o.created_at), MONTH) AS month,
		SUM(oi.sale_price - p.cost) AS profit,
		SUM(oi.sale_price) AS revenue
	FROM `bigquery-public-data.thelook_ecommerce.order_items` AS oi
JOIN `bigquery-public-data.thelook_ecommerce.orders` AS o
ON oi.order_id = o.order_id
JOIN `bigquery-public-data.thelook_ecommerce.products` AS p
ON oi.product_id = p.id
WHERE oi.status = 'Complete'
GROUP BY month
)
SELECT
	month,
	ROUND(profit/NULLIF(revenue, 0), 4) AS profit_margin
FROM
	metrics
ORDER BY
	month;
Long term trend chart showing monthly profit margin over time
Monthly profit margin over the full date range. Open full-size

Long Term Trend: Return Rate

WITH metrics AS (
SELECT
	DATE_TRUNC(DATE(o.created_at), MONTH) AS month,
	SUM(CASE WHEN oi.status = 'Complete' THEN 1 ELSE 0 END) AS complete_item_count,
	SUM(CASE WHEN oi.status = 'Returned' THEN 1 ELSE 0 END) AS returned_item_count
FROM `bigquery-public-data.thelook_ecommerce.order_items` AS oi
JOIN `bigquery-public-data.thelook_ecommerce.orders` AS o
ON oi.order_id = o.order_id
GROUP BY month
)
SELECT
	month,
	ROUND(returned_item_count / NULLIF((complete_item_count + returned_item_count),
0), 4) AS return_rate
FROM metrics
ORDER BY month;
Long term trend chart showing monthly return rate over time
Monthly return rate over the full date range. Open full-size

Analytical Insights & Business Recommendations

The long-term trend queries aggregate monthly revenue and profit from completed orders across the full date range of the dataset. For a growing e-commerce business, we expect to see an upward trajectory in both metrics, with revenue growth outpacing or tracking profit growth depending on margin stability. It is important to track whether profit growth is keeping pace with revenue growth. If revenue is growing faster than profit over time, it indicates either margin compression (rising product costs, increased discounting) or a shift in product mix toward lower-margin categories. Use demand forecasting and predictive modeling on the historical sales data to anticipate future revenue trends, plan inventory orders, and set staffing levels for peak periods.

Monthly units sold provides the clearest signal of demand growth independent of pricing changes. While revenue can increase due to price hikes, units sold directly reflects whether more customers are buying more products. Overlaying the units sold trend with marketing spend or promotional calendar data (if available) can measure campaign effectiveness. If units spike in specific months, identifying what drove those surges – new product launches, seasonal campaigns, or organic growth – and replicating successful patterns is key. Units sold is also the foundation for inventory planning: use the monthly trend to establish baseline demand, then adjust for seasonal patterns identified in the Seasonal Trends section.

Monthly profit margin trend reveals whether the business is becoming more or less efficient at converting revenue to profit over time. A stable or rising margin indicates good cost management and pricing discipline, while a declining margin signals potential issues: rising supplier costs, increased discounting, or a shift toward lower-margin products. If the profit margin trend shows compression over time, investigate root causes at the category and brand level. Cross-reference the margin trend with the category and brand analyses from earlier sections to identify whether specific segments are dragging overall margins down. Proactive supplier cost negotiations (particularly with high-volume brands like Diesel, Calvin Klein, and Carhartt identified in the brand analysis) should be timed to coincide with contract renewal periods.

Tracking return rate over time reveals whether the business is improving or deteriorating in customer satisfaction and product quality. A stable return rate (~28–30% as seen in the category analysis) suggests systemic factors. A rising trend would indicate worsening product quality or increasingly misaligned customer expectations, while a declining trend would validate that quality or UX improvements are working. The return rate trend is a lagging indicator – it reflects problems that already occurred. Complement it with leading indicators like product page bounce rates, customer review sentiment, and repeat purchase rates. If the return rate trend is flat (consistent with the uniformly ~28% rates seen across categories), it reinforces that a platform-wide intervention (better sizing tools, enhanced product photography, improved checkout UX) would be more effective than targeted product-level fixes.

The combination of these four long-term metrics – revenue, units sold, margin, and return rate – creates a business health dashboard. Revenue growth with stable margins indicates healthy scaling, while revenue growth with declining margins suggests unsustainable growth. Increasing units with declining revenue per unit suggests a product mix shift toward lower-price items. Establishing a monthly business review cadence using these four trend metrics is recommended. Set threshold alerts: if profit margin drops below 50% in any month, trigger a cost review; if return rate exceeds 30% in any month, trigger a quality review; if units sold declines month-over-month for two consecutive months, trigger a demand analysis. These trends enable proactive management rather than reactive problem-solving.

Seasonal Trends

Seasonal Trend: Revenue and Profit

SELECT
	EXTRACT(MONTH FROM o.created_at) AS month,
	SUM(oi.sale_price) AS revenue,
	SUM(oi.sale_price - p.cost) AS profit
FROM `bigquery-public-data.thelook_ecommerce.order_items` AS oi
JOIN `bigquery-public-data.thelook_ecommerce.orders` AS o
ON oi.order_id = o.order_id
JOIN `bigquery-public-data.thelook_ecommerce.products` AS p
ON oi.product_id = p.id
WHERE oi.status = 'Complete'
GROUP BY month
ORDER BY month;
Seasonal trend chart showing revenue and profit by month of year
Revenue and profit aggregated by month of year to reveal seasonal patterns. Open full-size

Seasonal Trend: Units Sold

SELECT
	EXTRACT(MONTH FROM o.created_at) AS month,
	COUNT(*) AS units_sold
FROM `bigquery-public-data.thelook_ecommerce.order_items` AS oi
JOIN `bigquery-public-data.thelook_ecommerce.orders` AS o
ON oi.order_id = o.order_id
WHERE oi.status = 'Complete'
GROUP BY month
ORDER BY month;
Seasonal trend chart showing units sold by month of year
Units sold aggregated by month of year to reveal seasonal patterns. Open full-size

Seasonal Trend: Profit Margin

WITH metrics AS (
	SELECT
		EXTRACT(MONTH FROM o.created_at) AS month,
		SUM(oi.sale_price - p.cost) AS profit,
		SUM(oi.sale_price) AS revenue
	FROM `bigquery-public-data.thelook_ecommerce.order_items` AS oi
JOIN `bigquery-public-data.thelook_ecommerce.orders` AS o
ON oi.order_id = o.order_id
JOIN `bigquery-public-data.thelook_ecommerce.products` AS p
ON oi.product_id = p.id
WHERE oi.status = 'Complete'
GROUP BY month
)
SELECT
	month,
	ROUND(profit/NULLIF(revenue, 0), 4) AS profit_margin
FROM metrics
ORDER BY month;
Seasonal trend chart showing profit margin by month of year
Profit margin aggregated by month of year to reveal seasonal patterns. Open full-size

Seasonal Trend: Return Rate

WITH metrics AS (
SELECT
	EXTRACT(MONTH FROM o.created_at) AS month,
	SUM(CASE WHEN oi.status = 'Complete' THEN 1 ELSE 0 END) AS complete_item_count,
	SUM(CASE WHEN oi.status = 'Returned' THEN 1 ELSE 0 END) AS returned_item_count
FROM `bigquery-public-data.thelook_ecommerce.order_items` AS oi
JOIN `bigquery-public-data.thelook_ecommerce.orders` AS o
ON oi.order_id = o.order_id
GROUP BY month
)
SELECT
	month,
	ROUND(returned_item_count / NULLIF((complete_item_count + returned_item_count),
0), 4) AS return_rate
FROM metrics
ORDER BY month;
Seasonal trend chart showing return rate by month of year
Return rate aggregated by month of year to reveal seasonal patterns. Open full-size

Analytical Insights & Business Recommendations

Seasonal aggregation reveals which months consistently generate higher or lower revenue and profit, independent of the long-term growth trend. For an e-commerce retailer selling apparel and accessories, we would expect demand peaks around fall/winter (September–December) driven by back-to-school, holiday gift-giving, and cold-weather outerwear purchases – aligning directly with the finding that Outerwear & Coats is the #1 revenue category. To capitalize on this, inventory orders should be timed to arrive 4–6 weeks before identified peak months. Since Outerwear & Coats dominates revenue with a $146.29 average sale price, ensuring adequate stock of premium jackets and coats before October is critical. Stockouts during peak demand months represent the highest opportunity cost in the business. The historical seasonal pattern can be used to build a demand forecasting model – even a simple moving average of monthly revenue by category would enable more precise purchase orders.

Different categories likely peak at different times: Outerwear & Coats and Sweaters before winter, Swim and Shorts before summer, Active wear potentially showing dual peaks (New Year's resolutions in January, pre-summer fitness in April/May). A category-specific promotional calendar should be built based on these seasonal patterns. Outerwear, Sweaters, and Blazers & Jackets (the top 3 margin categories) should be promoted during September–November when demand naturally peaks, while Swim, Shorts, and Active wear should be promoted during March–May as customers prepare for warm weather. Off-peak months for specific categories can be used for clearance sales and inventory reduction, particularly for seasonal items that would otherwise become dead stock.

The monthly units sold aggregation shows the rhythm of customer purchasing behavior across the year. Peak months for unit volume may differ from peak revenue months – a high-volume month dominated by lower-priced items (Intimates, Socks, Tops & Tees) would show high units sold but moderate revenue, while a month dominated by outerwear and jeans would show lower units but higher revenue per transaction. Seasonal units sold patterns should be used to staff fulfillment operations. If November and December show 30–50% more unit volume than average months, temporary fulfillment staff or extended shipping hours should be pre-arranged. The en-route rate data from the product and category analyses showed that 60–70% of orders are processing or shipping at any given time – during peak months, this backlog would grow unless fulfillment capacity scales proportionally.

If profit margins dip during specific months (e.g., post-holiday January, mid-summer July), it may indicate seasonal clearance discounting or markdown activity that compresses margins. Conversely, margin peaks likely coincide with periods when full-price purchases dominate (e.g., early fall when new inventory arrives). If seasonal margin analysis reveals consistent dips, the discounting strategy should be evaluated on a net basis. A 20% discount that drives a 40% increase in volume is net-positive, but a 20% discount that only drives a 15% volume increase destroys margin without recovering it through volume. The seasonal margin data can be used to set discount ceilings – never discount below the point where the volume increase fails to offset the margin compression.

Return rates may fluctuate seasonally for predictable reasons: holiday gift returns in January, sizing issues on cold-weather clothing purchased online, or impulse-buy returns during sale events. Understanding when returns spike helps plan reverse logistics capacity and refund budgets. If holiday months (November–December) show elevated return rates in January–February, reverse logistics and refund processing capacity should be scaled accordingly. Tightening the return window for sale/clearance items (which are already discounted and thus lower-margin) can reduce the return burden from impulse purchases. For seasonal categories like Outerwear where returns cost the most per unit ($146 avg sale price), investing in better product descriptions, fit guides, and user reviews specifically targeting the pre-peak season months is worthwhile.

The four seasonal metrics together – revenue, units, margin, and returns – create a predictive framework for the business year. Each metric informs a different operational lever: revenue patterns drive marketing budgets, unit patterns drive fulfillment staffing, margin patterns drive pricing strategy, and return patterns drive reverse logistics planning. A unified seasonal planning document should be built that maps each month to its expected demand profile and prescribes operational actions. For example: September → increase outerwear inventory and marketing spend; January → scale return processing and plan clearance events; March → begin summer category promotions. This transforms reactive operations into proactive, data-driven planning.

Customers

Top customers by generated Revenue

WITH first_layer AS (
	SELECT
		o.user_id AS customer_id,
		ROUND(SUM(CASE WHEN oi.status = 'Complete' THEN oi.sale_price ELSE 0 
END), 2) AS generated_revenue,
		ROUND(SUM(CASE WHEN oi.status = 'Complete' THEN (oi.sale_price - p.cost) 
ELSE 0 END), 2) AS generated_profit,
		COUNT(*) AS num_items_ordered,
		COUNT(DISTINCT o.order_id) AS num_orders,
		SUM(CASE WHEN oi.status = 'Returned' THEN 1 ELSE 0 END) AS 
num_returned_items,
		SUM(CASE WHEN oi.status = 'Complete' THEN 1 ELSE 0 END) AS 
num_completed_items,
SUM(CASE WHEN oi.status = 'Cancelled' THEN 1 ELSE 0 END) AS 
num_cancelled_items,
COUNT(DISTINCT CASE WHEN o.status = 'Complete' THEN o.order_id END) AS 
num_completed_orders,
MIN(o.created_at) AS first_order, 
MAX(o.created_at) AS last_order
	FROM `bigquery-public-data.thelook_ecommerce.order_items` AS oi
JOIN `bigquery-public-data.thelook_ecommerce.orders` AS o
ON oi.order_id = o.order_id
JOIN `bigquery-public-data.thelook_ecommerce.products` AS p
ON oi.product_id = p.id 
GROUP BY customer_id
)
, second_layer AS (
	SELECT 
		*,
		ROUND((generated_revenue / NULLIF(num_completed_orders, 0)), 2) AS 
avg_order_value,
		ROUND((num_items_ordered / NULLIF(num_orders, 0)), 2) AS avg_order_size,
		ROUND((num_returned_items / NULLIF((num_completed_items + 
num_returned_items), 0)), 4) AS return_rate,
		DATE_DIFF(DATE(last_order), DATE(first_order), DAY) AS lifetime_days
	FROM first_layer
)
SELECT
	*,
	RANK() OVER(ORDER BY generated_revenue DESC) AS revenue_rank,
	RANK() OVER(ORDER BY generated_profit DESC) AS profit_rank,
	RANK() OVER(ORDER BY num_items_ordered DESC) AS num_items_ordered_rank,
	RANK() OVER(ORDER BY num_orders DESC) AS num_orders_rank,
	RANK() OVER(ORDER BY num_returned_items DESC) AS num_returned_items_rank,
	RANK() OVER(ORDER BY num_completed_items DESC) AS num_completed_items_rank,
	RANK() OVER(ORDER BY num_cancelled_items DESC) AS num_cancelled_items_rank,
	RANK() OVER(ORDER BY num_completed_orders DESC) AS 
num_completed_orders_rank,
	RANK() OVER(ORDER BY first_order DESC) AS first_order_rank,
	RANK() OVER(ORDER BY last_order DESC) AS last_order_rank,
	RANK() OVER(ORDER BY avg_order_value DESC) AS avg_order_value_rank,
	RANK() OVER(ORDER BY avg_order_size DESC) AS avg_order_size_rank,
	RANK() OVER(ORDER BY return_rate DESC) AS return_rate_rank,
	RANK() OVER(ORDER BY lifetime_days DESC) AS lifetime_days_rank
FROM second_layer
ORDER BY revenue_rank ASC
LIMIT 15;
customer_id generated_revenue generated_profit num_items_ordered num_orders num_returned_items num_completed_items num_cancelled_items num_completed_orders first_order last_order avg_order_value avg_order_size return_rate lifetime_days revenue_rank profit_rank num_items_ordered_rank num_orders_rank num_returned_items_rank num_completed_items_rank num_cancelled_items_rank num_completed_orders_rank first_order_rank last_order_rank avg_order_value_rank avg_order_size_rank return_rate_rank lifetime_days_rank
417911487.0884.963103012022-09-28 04:15:35.000000 UTC2022-09-28 04:15:35.000000 UTC1487.03.00.001115410300741202320501739233506293870428126701202329774
96081348.98703.949404422022-06-02 13:50:09.000000 UTC2025-04-28 20:40:37.000000 UTC674.492.250.01061231481120234351642996584437422967921120234750
586721327.33688.926204012021-12-10 12:12:04.000000 UTC2025-09-11 22:33:43.000000 UTC1327.333.00.013713420251001612023435173923350696262709822670120232338
67211303.55708.336305022025-06-17 16:41:11.000000 UTC2026-02-18 00:34:38.000000 UTC651.772.00.02464220255093120231441739229923890865210081031202318441
411391170.01645.444104012025-08-23 10:04:29.000000 UTC2025-08-23 10:04:29.000000 UTC1170.014.00.0055805730074120234351739233501964528833311202329774
962331142.38614.037304012025-09-02 02:54:09.000000 UTC2025-10-28 15:36:32.000000 UTC1142.382.330.056688875093120234351739233501900322776476751202325645
102181120.4468.696315022026-02-22 01:11:21.000000 UTC2026-03-16 03:41:47.000000 UTC560.22.00.166722767202550934008144173922995328346412881031198327583
898401103.0576.934203012024-12-07 22:57:33.000000 UTC2026-02-12 19:45:20.000000 UTC1103.02.00.0432814805710016120232050173923350342239545581031202313731
994021095.49605.274203012024-06-22 08:20:14.000000 UTC2025-07-10 07:07:30.000000 UTC1095.492.00.0383998057100161202320501739233504188432315681031202314818
724211090.96566.275204112023-09-13 12:47:43.000000 UTC2025-10-01 00:04:09.000000 UTC1090.962.50.074910164060100161202343560783350525602538875779120238282
312611079.88634.524104012025-11-10 19:44:29.000000 UTC2025-11-10 19:44:29.000000 UTC1079.884.00.00116805730074120234351739233501412921355811202329774
927431072.99563.612102012019-05-26 14:46:36.000000 UTC2019-05-26 14:46:36.000000 UTC1072.992.00.00121725303300741202342411739233507974979862981031202329774
582691061.94515.495304122023-10-25 12:15:17.000000 UTC2025-10-24 12:12:28.000000 UTC530.971.670.0730134240605093120234356078299511082315114321954120238531
312211046.99467.515204012023-09-22 16:05:02.000000 UTC2024-09-30 17:07:31.000000 UTC1046.992.50.037414684060100161202343517392335052246490931057791202315040
905301039.66618.497404112025-01-12 02:14:23.000000 UTC2025-11-14 14:49:28.000000 UTC1039.661.750.030615788711202343560783350324972094411211741202316753

Customer segment Counts

WITH customer_order_counts AS (
  SELECT
    user_id,
    SUM(num_of_item) AS total_items
  FROM `bigquery-public-data.thelook_ecommerce.orders`
  GROUP BY user_id
),
bounds AS (
  SELECT
    MIN(total_items) AS min_items,
    MAX(total_items) AS max_items
  FROM customer_order_counts
),
segments AS (
  SELECT
    c.total_items,
    b.min_items,
    b.max_items,
    LEAST(
      FLOOR((c.total_items - b.min_items) / ((b.max_items - b.min_items) / 4.0)) + 1,
      4
    ) AS segment
  FROM customer_order_counts c
  CROSS JOIN bounds b
)
SELECT
  min_items,
  max_items,
  segment,
  ROUND(min_items + (segment - 1) * (max_items - min_items) / 4.0, 2) AS segment_start,
  ROUND(min_items + segment * (max_items - min_items) / 4.0, 2) AS segment_end,
  COUNT(*) AS num_customers
FROM segments
GROUP BY segment, min_items, max_items
ORDER BY segment;
min_items max_items segment segment_start segment_end num_customers
1131.01.04.064554
1132.04.07.013385
1133.07.010.01877
1134.010.013.0147

Customer Geographics

SELECT
  u.country,
  COUNT(DISTINCT u.id) AS num_customers,
  COUNT(oi.id) AS units_sold,
  ROUND(SUM(oi.sale_price), 2) AS revenue,
  ROUND(SUM(oi.sale_price - p.cost), 2) AS profit
FROM
  `bigquery-public-data.thelook_ecommerce.order_items` oi
JOIN
  `bigquery-public-data.thelook_ecommerce.users` u
  ON oi.user_id = u.id
JOIN
  `bigquery-public-data.thelook_ecommerce.products` p
  ON oi.product_id = p.id
WHERE
  oi.status NOT IN ('Cancelled', 'Returned')
GROUP BY
  u.country
ORDER BY
  revenue DESC;
country num_customers units_sold revenue profit
China22412461622748111.081425885.25
United States14926306261824282.8944656.58
Brasil9618199021186881.13616746.55
South Korea34337038412219.82213576.53
France31376402382581.48198723.99
United Kingdom30386343376944.04195623.13
Germany28075713348155.95180505.4
Spain27455541334100.88173307.63
Japan15523153188862.2297987.7
Australia14502967177458.5592306.6
Belgium767166696644.6450128.32
Poland15530116104.048341.83
Colombia714843.29462.26
Austria1221.6312.09
España1119.9810.75

Analytical Insights & Business Recommendations

The customer segment count data reveals an extremely skewed distribution: 64,554 customers (80.7%) fall in Segment 1 (1–4 items ordered), 13,385 (16.7%) in Segment 2 (4–7 items), 1,877 (2.3%) in Segment 3 (7–10 items), and only 147 (0.2%) in Segment 4 (10–13 items). The overwhelming majority of customers are low-frequency, low-volume purchasers. This distribution is typical of e-commerce businesses but highlights a critical retention challenge: most customers are essentially one-time or two-time buyers. The top customer by revenue (customer #41791) generated $1,487 from a single order of 3 items – showing that high revenue comes from high-value items, not repeat purchasing. Implementing customer retention strategies targeting the Segment 1 customers (1–4 items) could yield significant results. Even moving 5% of these 64,554 customers into Segment 2 (by encouraging one additional order) would add ~3,228 returning customers. Tactics include post-purchase email campaigns with personalized product recommendations, loyalty discounts on second purchases, and targeted ads for complementary items based on initial purchase categories. The cost of retaining an existing customer is significantly lower than acquiring a new one.

The top 15 customers by revenue almost all share a profile: 1–4 orders, 3–7 items, and very high average order values ($500–$1,487). Most of these customers achieved top-15 status through a single large purchase of premium items rather than through repeat buying behavior. Customer #41791's $1,487 came from one order; customer #41139's $1,170 from one order of 4 items. Only customers #9608 and #6721 show multiple orders (4 and 3 respectively) with meaningful lifetime spans (1,061 and 246 days), suggesting they may be the closest to genuinely loyal, repeat customers among the top earners. The high-value, single-order customers represent both an opportunity and a risk. They contribute outsized revenue but are fragile – if they don't return, their lifetime value is capped at one transaction. Targeting these customers with VIP-style retention – exclusive early access to new premium products, personalized thank-you communications, and loyalty incentives calibrated to their demonstrated willingness to spend ($500+) – could be highly effective. Even converting 20% of them into two-order customers would significantly impact revenue.

China dominates customer geography with 22,412 customers generating $2,748,111.08 in revenue – more than the next two countries combined. The United States follows with 14,926 customers and $1,824,282.80, then Brazil with 9,618 customers and $1,186,881.13. These three countries account for the vast majority of the customer base. The per-customer revenue is relatively consistent across major markets ($122–$131 per customer for the top 5 countries), suggesting that spending behavior doesn't vary dramatically by geography – the differences in total revenue are driven by customer count, not average spending. Identifying the top-demand products for each customer country and advertising accordingly is recommended. Chinese customers, representing the largest market, should see product recommendations optimized for their browsing and purchasing patterns. Logistics and shipping optimization should prioritize the China, US, and Brazil shipping corridors since they represent the overwhelming majority of order volume. For smaller but growing markets (South Korea, France, UK, Germany, Spain), investing in localized product pages and regional marketing to grow customer counts toward critical mass would be beneficial.

Distribution Centers

Distribution center performance

SELECT
  dc.name AS distribution_center,
  COUNT(oi.id) AS total_units,
  ROUND(SUM(oi.sale_price), 2) AS revenue,
  ROUND(SUM(oi.sale_price) - SUM(p.cost), 2) AS profit,
  ROUND(
    COUNTIF(oi.status = 'Processing') / COUNT(oi.id) * 100, 2
  ) AS processing_pct
FROM
  `bigquery-public-data.thelook_ecommerce.order_items` oi
JOIN
  `bigquery-public-data.thelook_ecommerce.products` p
  ON oi.product_id = p.id
JOIN
  `bigquery-public-data.thelook_ecommerce.distribution_centers` dc
  ON p.distribution_center_id = dc.id
GROUP BY
  dc.name
ORDER BY
  total_units DESC;
distribution_center total_units revenue profit processing_pct
Memphis TN242821417936.76742425.7820.27
Chicago IL238351321943.15692110.9919.83
Houston TX228291600413.73853992.0319.59
Mobile AL185151242396.82634302.920.18
Los Angeles CA17274949866.99489442.3519.71
Charleston SC16636662246.68334984.2519.85
Philadelphia PA165681065642.92542109.6619.58
Port Authority of New York/New Jersey NY/NJ16388933800.14483299.7120.23
New Orleans LA12816786466.54414082.519.47
Savannah GA11954799532.26405281.5420.25

Distribution center inventory

WITH product_sales AS (
  SELECT
    p.id AS product_id,
    p.distribution_center_id,
    COUNT(oi.id) / GREATEST(DATE_DIFF(CURRENT_DATE(), MIN(DATE(oi.created_at)), DAY), 1) AS daily_sales_rate
  FROM
    `bigquery-public-data.thelook_ecommerce.products` p
  LEFT JOIN
    `bigquery-public-data.thelook_ecommerce.order_items` oi
    ON p.id = oi.product_id
  GROUP BY
    p.id, p.distribution_center_id
),


inventory AS (
  SELECT
    id AS product_id,
    product_distribution_center_id,
    COUNT(*) AS stock_on_hand
  FROM
    `bigquery-public-data.thelook_ecommerce.inventory_items`
  WHERE
    sold_at IS NULL
  GROUP BY
    id, product_distribution_center_id
),


product_status AS (
  SELECT
    ps.distribution_center_id,
    CASE
      WHEN SAFE_DIVIDE(COALESCE(i.stock_on_hand, 0), ps.daily_sales_rate) > 90 THEN 'Overstocked'
      WHEN SAFE_DIVIDE(COALESCE(i.stock_on_hand, 0), ps.daily_sales_rate) < 14 THEN 'Understocked'
    END AS stock_status
  FROM
    product_sales ps
  LEFT JOIN
    inventory i
    ON ps.product_id = i.product_id
    AND ps.distribution_center_id = i.product_distribution_center_id
)


SELECT
  dc.name AS distribution_center,
  COUNTIF(stock_status = 'Overstocked') AS overstocked_products,
  COUNTIF(stock_status = 'Understocked') AS understocked_products,
  COUNTIF(stock_status IS NOT NULL) AS total_flagged_products
FROM
  product_status ps
JOIN
  `bigquery-public-data.thelook_ecommerce.distribution_centers` dc
  ON ps.distribution_center_id = dc.id
GROUP BY
  dc.name
ORDER BY
  total_flagged_products DESC;
distribution_center overstocked_products understocked_products total_flagged_products
Chicago IL31135953906
Memphis TN29835763874
Houston TX29433563650
Mobile AL18827192907
Los Angeles CA16225882750
Charleston SC16025452705
Philadelphia PA15525012656
Port Authority of New York/New Jersey NY/NJ15124142565
New Orleans LA9220142106
Savannah GA7018051875

Analytical Insights & Business Recommendations

Houston TX generates the most revenue ($1,600,413.73) and profit ($853,992.03) across all distribution centers, despite ranking only #3 in total units shipped (22,829). This means Houston is processing higher-value products – likely premium outerwear, jeans, and suits that dominate the top-revenue categories. By comparison, Memphis TN ships the most units (24,282) but generates $182K less revenue than Houston, indicating Memphis handles more lower-price-point items.

Recommendation: Given Houston's revenue leadership, ensure this facility has priority access to premium inventory (Outerwear & Coats, Suits & Sport Coats, Blazers & Jackets – the three highest-margin categories). Operational disruptions at Houston would disproportionately impact the business's bottom line. Consider allocating additional quality control resources to Houston since its higher-value shipments have greater per-unit revenue risk if damaged or delayed.

Processing percentages across all 10 distribution centers fall in a tight band of 19.47%–20.27%, suggesting that order processing capacity and speed are consistent across the network. No single facility is significantly bottlenecked or outperforming others in throughput.

Recommendation: The uniform ~20% processing rate raises a question: is this the optimal throughput, or is every facility equally constrained by the same bottleneck (e.g., a shared technology platform, standardized staffing model, or common shipping carrier limitations)? Investigate whether shipping routes and processing practices across the network can be optimized – even a 1 percentage point improvement in processing speed across all 10 facilities, moving more orders from processing to shipped faster, would reduce the window for customer cancellations (which were identified as a significant source of lost revenue in the product and brand analyses).

The inventory analysis reveals a dramatic imbalance: across all distribution centers, understocked products outnumber overstocked products by roughly 10:1. Chicago IL has 3,595 understocked products vs. 311 overstocked; Memphis TN has 3,576 understocked vs. 298 overstocked. This pattern is consistent across every facility.

Understocking means products with active demand don't have enough inventory to meet expected sales velocity, leading to potential stockouts, lost revenue, and disappointed customers. Given that the product-level analysis showed high-value items like The North Face, Canada Goose, and Diesel driving outsized revenue per unit, a stockout on these items has far greater revenue impact than on low-price basics.

Recommendation: The widespread understocking is the most actionable finding in the distribution center analysis. Prioritize replenishment for the highest-revenue and highest-margin products first – ensure Outerwear & Coats, Suits & Sport Coats, and Blazers & Jackets (the top 3 margin categories) are fully stocked before allocating capital to lower-margin items. Demand can be tracked and forecasted using the historical sales data and seasonal patterns identified in the trends sections to build more accurate reorder points and safety stock levels.

While understocking dominates, each facility does carry 70–311 overstocked products. These are items where inventory exceeds 90 days of projected sales at current velocity – capital tied up in slow-moving merchandise that could be allocated to higher-demand items.

Recommendation: Identify the specific overstocked products at each facility and cross-reference with the bottom products and bottom brands analyses. Products that are overstocked AND appear in the zero-revenue or low-demand lists should be candidates for clearance pricing or return to supplier. Products that are overstocked but have decent margins may simply need promotional support to accelerate their sell-through rate – targeted advertising or bundle deals could move excess inventory before it becomes obsolete.

With 10 distribution centers across the southeastern and eastern US (Memphis, Chicago, Houston, Mobile, LA, Charleston, Philadelphia, NY/NJ, New Orleans, Savannah), the network is heavily weighted toward the eastern half of the country. Given that the customer geography data shows China and Brazil as the #1 and #3 customer countries, the domestic distribution network may be serving international shipping corridors differently than domestic ones.

Recommendation: Evaluate whether the current distribution center footprint optimally serves the geographic customer mix. If the majority of US orders originate from certain regions, ensure inventory is positioned at the nearest facility rather than evenly distributed. For international shipments (especially to China, the largest market), identify which port-adjacent facilities (LA, Houston, NY/NJ) are most efficient for international fulfillment and consider concentrating international-bound inventory at those locations to reduce domestic transit time before international shipping.

The distribution center network as a whole has room for shipping and transit cost optimization. With high en-route rates (60–70% of non-cancelled, non-returned orders) observed across products and categories, a meaningful portion of the business's inventory is constantly in transit between facilities and customers.

Recommendation: Investigate whether shipping routes between facilities and major customer hubs can be consolidated or optimized. For high-volume brands (Calvin Klein with 3,180 orders, Allegra K with 6,057 orders, Carhartt with 2,509 orders), it may be more efficient to position their inventory at specific facilities closest to their customer demand centers rather than spreading it across all 10 locations. This reduces inter-facility transfers and shortens last-mile delivery times, improving both cost efficiency and customer satisfaction.

Conclusion

Key Findings

Across ten analytical dimensions – products, brands, categories, trends, customers, and distribution centers – several findings emerged that would be critical for any business stakeholder evaluating this retailer's performance.

Revenue concentration in premium categories: Outerwear & Coats generates $339,222 in revenue – ranking #1 – with only 9,028 unit orders, which ranks #10 by volume. This proves that premium categories drive disproportionate revenue per unit. The top 2 categories (Outerwear & Jeans) account for approximately 24% of total revenue, meaning a quarter of the business depends on just two product lines.

Margin diverges sharply from revenue: Blazers & Jackets has the highest profit margin at 62.1% but ranks only #15 in revenue – the most profitable category per dollar sold is one of the lower-volume ones. Conversely, Jeans ranks #2 in revenue but #21 in margin at 46.5%. A strategy optimized for revenue looks fundamentally different from one optimized for profitability.

Return rates are systemic, not category-specific: Return rates across all 26 categories fall within a tight 27–31% band, suggesting the approximately 28% baseline is driven by platform-level factors – return policy, product photography, sizing tools – rather than category-specific quality issues. This is a critical finding because it means platform-wide UX improvements would compound across the entire catalog, whereas targeted product-level fixes would have limited impact.

Lost revenue rivals earned revenue: For nearly every top product, brand, and category, lost revenue from returns and cancellations approaches or exceeds actual completed revenue. Diesel leads all brands in lost revenue ($49,754) against earned revenue of $53,774. Reducing the return and cancellation rate by even 2 percentage points would meaningfully increase net revenue across the business.

The customer base is overwhelmingly single-purchase: 80.7% of customers (64,554 of 79,963) ordered only 1–4 items total. The top revenue customer generated $1,487 from a single order. Retention and repeat purchasing represent the largest untapped growth lever – the business is acquiring customers effectively but not converting them into repeat buyers.

Distribution centers are systematically understocked: Across all 10 facilities, understocked products outnumber overstocked products by approximately 10:1. Chicago alone has 3,595 understocked items versus 311 overstocked – meaning potential revenue is being lost to stockouts at scale. This is an operational problem with a direct revenue impact.

Zero-revenue products consume resources: Multiple products and brands generated $0 in completed revenue despite having orders placed – 100% of their orders were returned, cancelled, or remain in transit. These items occupy inventory space and processing bandwidth without contributing any revenue.

Geographic concentration: Three countries (China, United States, Brazil) account for the vast majority of revenue, with per-customer spending relatively uniform across geographies at $122–$131 per customer in the top 5 markets. This suggests that demand patterns are consistent internationally but that revenue growth is constrained to a small number of markets.

Highest-Impact Recommendations

Synthesizing the findings across all ten analytical sections, the following actions would generate the greatest business value if implemented. These are ordered by estimated impact – the first recommendation alone would affect every category, brand, and product in the catalog.

1. Invest in platform-wide return reduction. Implement improved sizing tools, enhanced product photography, and virtual try-on capabilities. The uniform ~28% return rate across all 26 categories means a single platform improvement compounds across the entire catalog. A 2-point reduction in return rate would recover thousands of currently-lost orders and directly increase net revenue without requiring any new customer acquisition.

2. Rebalance distribution center inventory. Address the 10:1 understocking-to-overstocking ratio immediately, prioritizing the highest-revenue and highest-margin categories – Outerwear & Coats, Suits & Sport Coats, and Blazers & Jackets – to prevent stockouts on items with $100–$150 average revenue per unit. Every stockout on a premium item is a high-value sale lost.

3. Implement customer retention campaigns targeting single-purchase customers. The 64,554 customers who purchased only 1–4 items represent a massive re-engagement opportunity. Even converting 5% into repeat buyers adds approximately 3,200 returning customers – significantly cheaper than equivalent new customer acquisition and with higher expected lifetime value.

4. Negotiate supplier costs for high-volume, low-margin brands. Diesel (1,466 orders, 50.2% margin), Wrangler (1,287 orders, 47.2% margin), and the denim category broadly exhibit structural margin compression. The volume leverage with these suppliers is significant and should be used to renegotiate cost-of-goods to bring margins closer to the catalog average.

5. Delist zero-revenue products and brands. Products with 3 or more orders and $0 in completed revenue are consuming inventory space, warehouse capacity, and fulfillment bandwidth for no return. Catalog pruning would simplify operations, reduce carrying costs, and improve the customer browsing experience by removing items that consistently fail to convert.

6. Prioritize marketing spend on high-margin categories. A $1 increase in Blazers & Jackets demand yields $0.62 in profit versus $0.44 for Tops & Tees. Advertising ROI is structurally higher for high-margin categories, meaning the same marketing budget generates more profit when directed toward these product lines.

7. Build seasonal inventory planning using trend data. Front-load outerwear and sweater inventory before fall/winter peak demand, scale fulfillment staffing for identified high-volume months, and time clearance events to align with the demand troughs visible in the seasonal analysis. Proactive inventory planning based on these patterns would reduce both stockouts and overstock carrying costs.

Analytical Approach & What This Demonstrates

This project was designed to demonstrate the kind of analysis a data analyst performs in practice – not isolated queries answering single questions, but a systematic, multi-dimensional examination of an entire business from the data layer up.

Multi-dimensional analysis: Every entity – product, brand, category – was examined from 6–8 metric perspectives simultaneously (revenue, profit, margin, volume, return rate, lost revenue, and more) rather than just one. This mirrors real analyst work where a product can look excellent on revenue but terrible on margin, or a brand can lead in profit but hemorrhage returns. Single-metric analysis leads to bad decisions; multi-dimensional analysis reveals trade-offs.

Paired top/bottom analysis: Analyzing only top performers gives an incomplete picture. The "Bottom" sections reveal where the business is bleeding – zero-revenue products, margin-compressing categories, and dead-weight brands. Identifying what to stop doing is as valuable as identifying what to double down on, and this paired structure ensures both sides are examined.

Layered CTE architecture: The consistent first_layer → second_layer → third_layer CTE pattern demonstrates a real-world query design approach where complex metrics are built incrementally. Each layer has a clear purpose: aggregate raw data, derive ratios and calculated metrics, then rank and filter. This produces readable, maintainable, and auditable SQL that another analyst can pick up and extend without reverse-engineering the logic.

Recommendations grounded in data: Every recommendation in this project ties directly to a specific finding with a specific number. "Reduce return rates" is vague; "reduce the platform-wide ~28% return rate that is uniformly distributed across all 26 categories, suggesting platform-level UX as the root cause" is actionable and defensible. Data-driven recommendations require this level of specificity to be credible.

SQL as the right tool for the job: This entire analysis – joining six tables, computing conditional aggregations, building multi-layer derived metrics, ranking across 29,000+ products and 2,700+ brands – was accomplished purely in SQL. No data was exported for processing in another tool. This demonstrates that SQL is not just a "data extraction" language but a full analytical engine capable of end-to-end business analysis when used with intention and structure.

Limitations & Future Work

Analytical maturity includes knowing the boundaries of your own work. The following limitations are important context for interpreting the findings above.

Synthetic dataset: thelook_ecommerce is Google's synthetic dataset, not real company data. Some pricing anomalies exist – for example, socks listed at $903, which are presumably data generation artifacts. The analytical methodology is sound and fully transferable to real datasets, but the specific dollar figures are illustrative rather than representative of a real retailer.

No cost-of-operations data: The analysis calculates product-level profit (sale price minus product cost) but cannot account for fulfillment costs, marketing spend, overhead, or return processing costs. A real-world version of this analysis would incorporate these to produce true net profitability figures and more accurate ROI calculations for the recommendations.

No customer journey data: The dataset lacks clickstream, page-view, cart-abandonment, or marketing attribution data. Customer analysis is limited to transactional behavior (orders, returns, cancellations) rather than full funnel analysis. Understanding why customers don't return would require data this dataset does not contain.

Time-series stationarity not tested: The long-term and seasonal trend analyses identify patterns visually but do not apply statistical tests for trend significance or seasonality decomposition. A more rigorous approach would use time-series methods – moving averages, decomposition, or forecasting models – which is beyond SQL's native capabilities and better suited to Python or R.

No A/B testing or causal inference: All findings are correlational. Recommendations like "improve sizing tools to reduce returns" are grounded in observed patterns but would need controlled experiments to validate causal impact before committing significant resources.

Potential future extensions: This analysis could be extended with customer cohort and retention analysis (tracking repeat purchase behavior over time), RFM segmentation (Recency, Frequency, Monetary value scoring), market basket analysis (which products are frequently purchased together), or predictive modeling for return probability – each of which would require tools beyond SQL and would build naturally on the foundation established here.

Tools Used

  • Google BigQuery – cloud data warehouse, Standard SQL dialect
  • BigQuery public dataset: bigquery-public-data.thelook_ecommerce
  • No external tools: All analysis performed entirely within SQL – no data export, no spreadsheet processing, no visualization libraries. Charts in the Long Term Trends and Seasonal Trends sections were produced separately from query result exports, but all underlying analysis is SQL-native.