Skip to content
Ian Cunningham monogramIan CunninghamData & AI consultant

Blog

Analysing Regional Sales Performance with SQL

A practical SQL analysis of sales territories, shipping geographies, customer and channel mix, product mix, geographic concentration, and recent regional direction.

Analysing Regional Sales Performance with SQL
KT

Article summary

Key Takeaways

  1. Regional totals need commercial context

    North America contributes 72.24% of net sales, but customer count, channel, and order value vary substantially between its territories.

  2. Territory and shipping geography answer different questions

    Sales territories describe commercial ownership, while shipping countries and state or province fields describe where orders are delivered.

  3. Customer mix changes the ranking

    Small store-led territories produce very high average order values, while larger online markets generate many more individual orders.

  4. Recent growth isn't the same as market opportunity

    Australia, Germany, and the United Kingdom grow strongly in the latest rolling year, but market size, margin, targets, and acquisition data are still missing.

The product analysis in the previous article showed why a single ranking can hide important differences. Regional analysis has the same problem.

A territory can lead because it serves more customers, has larger store orders, sells a different product mix, or covers a more established market. A low total can describe a smaller customer base rather than weak execution.

This article compares Adventure Works’ sales territories while keeping those differences visible. I will also separate the territory assigned to an order from the address to which it was shipped. They happen to align neatly in this sample, but they remain different business concepts.

This article is part of a twelve-part SQL sales analytics project based on AdventureWorks2025, supported by the sql-sales-analytics-portfolio repository.

SQL Sales Analytics Project Series

  1. Building a Sales Analytics Solution with SQL: Project Overview
  2. Understanding the Sales Data Landscape with SQL
  3. Assessing Sales Data Quality with SQL
  4. Preparing Sales Data for Analysis with SQL
  5. Analysing Customer Purchasing Behaviour with SQL
  6. Measuring Product Performance with SQL
  7. Analysing Regional Sales Performance with SQL ← You are here
  8. Time-Series Analysis with SQL
  9. Using Advanced SQL to Generate Business Insights
  10. Optimising SQL for Analytical Workloads
  11. Designing an Analytics-Friendly Data Model
  12. Completing a SQL Sales Analytics Project

Reproduce the Analysis

This article depends on the analytical views created in Article 4. If the Analytics views aren’t installed, run the analytical view creation script against AdventureWorks2025 first.

Then run the complete regional sales performance script in SQL Server Management Studio. The analysis is read-only, uses a session-scoped temporary table, and includes every territory, shipping geography, customer mix, product mix, concentration, and rolling-period query referenced below.

The Business Problem

Regional sales reports often begin with revenue by territory. That answers where recorded sales value is assigned, but it doesn’t explain why the totals differ or what action should follow.

I want to answer six related questions:

  • Contribution:How much sales value does each territory generate?
  • Scale:How many orders and ordering customer accounts sit behind that value?
  • Commercial mix:Is the territory driven by individual online orders or larger store orders handled by salespeople?
  • Shipping geography:Where are orders actually delivered?
  • Product mix:Do territories depend on different categories?
  • Recent direction:Which territories strengthened or weakened in the latest rolling year?

I use order SubTotal as net sales value. It excludes tax and freight and reconciles with the sum of net order-line values. It still isn’t profit.

Establishing the Baseline

The analytical order view contains 31,465 orders from 19,119 ordering customer accounts, covering 30 May 2022 to 29 June 2025. Those orders generate $109.85 million in net sales value.

The baseline query calculates all four figures at order grain. Using the order view matters because joining order lines would repeat the order subtotal once per line.

AdventureWorks groups its ten sales territories into three broader regions.

Territory group Orders Ordering accounts Net sales Average order value Sales share
North America 16,108 9,887 $79.35m $4,926 72.24%
Europe 8,514 5,607 $19.84m $2,330 18.06%
Pacific 6,843 3,625 $10.66m $1,557 9.70%

The territory-group query produces this comparison.

North America is clearly the largest group, but that summary combines five US territories and Canada. The next level exposes much more variation.

Comparing Sales Territories

I create one reusable row per SalesTerritoryID, then rank territories by net sales value.

SELECT
    SalesTerritoryID,
    MAX(SalesTerritory) AS SalesTerritory,
    COUNT(*) AS Orders,
    COUNT(DISTINCT CustomerID) AS OrderingCustomerAccounts,
    SUM(SubTotal) AS NetSalesValue,
    AVG(SubTotal) AS AverageOrderValue,
    SUM(SubTotal) / COUNT(DISTINCT CustomerID)
        AS NetSalesPerOrderingAccount
FROM Analytics.vwSalesOrders
GROUP BY SalesTerritoryID;

The complete territory aggregation and ranking preserves territory identifiers, group names, and percentage contribution.

Rank Territory Orders Ordering accounts Net sales Average order value Sales share
1 Southwest 6,224 4,565 $24.18m $3,886 22.02%
2 Canada 4,067 1,677 $16.36m $4,022 14.89%
3 Northwest 4,594 3,428 $16.08m $3,501 14.64%
4 Australia 6,843 3,625 $10.66m $1,557 9.70%
5 Central 385 69 $7.91m $20,543 7.20%
6 Southeast 486 91 $7.88m $16,213 7.17%
7 United Kingdom 3,219 1,951 $7.67m $2,383 6.98%
8 France 2,672 1,844 $7.25m $2,714 6.60%
9 Northeast 352 57 $6.94m $19,714 6.32%
10 Germany 2,623 1,812 $4.92m $1,874 4.47%

Southwest leads the total, while Australia records more orders but less than half of Southwest’s sales value. Central, Southeast, and Northeast sit in the middle of the revenue ranking despite having very few orders and customer accounts.

Those three territories would look highly productive if I considered revenue per ordering account alone. Central produces $114,623 per ordering account and Northeast $121,743. The figures are real, but the customer mix explains them.

Customer and Channel Mix Explain the Extremes

In this dataset, every individual order is online and every store order is salesperson-assisted. The two labels therefore describe the same split from different perspectives.

The territory mix query calculates each segment’s contribution within its territory.

Territory Store sales share Individual sales share Store average order Individual average order
Central 99.96% 0.04% $21,027 $333
Northeast 99.91% 0.09% $20,271 $653
Southeast 99.84% 0.16% $16,775 $720
Canada 87.91% 12.09% $20,777 $586
Australia 14.96% 85.04% $12,755 $1,349

Central, Northeast, and Southeast are effectively small store-account portfolios. Australia is the opposite: 85.04% of its net sales comes from individuals, spread across 6,718 online orders.

This makes a direct territory ranking difficult to interpret. A territory manager serving dozens of large store accounts is doing a different job from a market generating thousands of online consumer orders.

Compare like with like

I would report store and individual performance separately before comparing territory managers or regional acquisition activity. The combined total remains useful, but it shouldn’t be treated as a fair performance score.

Territory Isn’t the Same as Shipping Geography

A sales territory is an organisational assignment. A shipping country, state, or province comes from the delivery address. They can support different questions:

  • Sales territory: Who owns or manages the commercial relationship?
  • Shipping geography: Where is product demand being fulfilled?

The shipping-country query shows that the dataset contains six destination countries. The United States contributes $63.00 million, or 57.35% of net sales, followed by Canada at 14.89% and Australia at 9.70%.

The territory-to-country check finds a clean mapping in the recorded data. Every order in Australia ships to Australia, every order in France ships to France, and all five US territories ship to the United States.

That doesn’t make the fields interchangeable. A future territory redesign, cross-border account, or reassigned customer could break the relationship. Keeping both fields allows the report to detect that change instead of assuming it can’t happen.

Looking Below Country Level

Country totals can hide geographic concentration. I use ROW_NUMBER to identify the leading shipping state or province inside each sales territory.

ROW_NUMBER() OVER
(
    PARTITION BY SalesTerritoryID
    ORDER BY NetSalesValue DESC, ShipToStateProvince
) AS TerritoryRank

The state and province concentration query shows:

  • California contributes 64.00% of Southwest sales.
  • Washington contributes 58.58% of Northwest sales.
  • New South Wales contributes 47.52% of Australia sales.
  • Ontario contributes 37.78% of Canada sales.
  • England contributes 100% of United Kingdom sales in this sample.

These concentrations may matter for logistics, account coverage, and local marketing. They don’t prove that the remaining areas are underpenetrated. That assessment would need population, addressable-market, competitor, and acquisition data.

Product Mix Adds Another Layer

Bikes lead every territory by sales value, but their contribution isn’t uniform.

Territory Bike sales share Component sales share
Australia 95.50% 1.91%
Germany 89.15% 6.87%
United Kingdom 87.20% 9.28%
Northwest 86.30% 11.09%
Northeast 81.79% 15.15%

The complete territory product-mix query includes all four categories for all ten territories.

Australia’s high bike share fits its individual-led sales pattern. Northeast has the largest component share at 15.15% and is almost entirely store-led. That association doesn’t show cause, but it gives the next investigation a useful direction: compare product demand within customer type rather than assuming geography alone explains the difference.

Checking Recent Direction

Lifetime totals favour territories that performed strongly earlier in the observation period. I compare adjacent rolling twelve-month periods ending on 30 April 2025, the latest date through which both store and individual activity is observed.

Territory Prior period Latest period Change Change rate
Germany $0.59m $3.66m +$3.07m +523.06%
Australia $2.12m $5.69m +$3.57m +168.21%
United Kingdom $2.09m $4.81m +$2.72m +129.97%
Northwest $4.08m $7.68m +$3.60m +88.19%
Southwest $8.32m $10.20m +$1.88m +22.63%
Northeast $3.35m $2.40m -$0.95m -28.39%

The script derives a shared cutoff from customer-type coverage, then the rolling territory query returns all ten territories.

Germany has the highest percentage increase, while Northwest has the largest absolute increase. Southwest remains the largest territory in the latest period and grows by 22.63%. Northeast is the only territory to decline, falling by $0.95 million or 28.39%.

These movements identify where to ask more questions. They don’t reveal whether the cause is customer acquisition, lost accounts, product lifecycle, a sales assignment change, seasonality, or wider market conditions. The dedicated time-series article will examine the temporal pattern in more detail.

Growth isn’t the same as opportunity

A rising territory may deserve investment, but the sales data doesn’t contain market size, acquisition cost, capacity, competitor activity, targets, or margin. I would combine those measures before calling one region a better growth opportunity than another.

Business Recommendations

Separate store and individual scorecards

Regional reporting should retain the combined result, then split it by customer type and channel. This makes comparisons more meaningful and prevents large store orders from being confused with broad consumer demand.

Investigate the Northeast decline at account level

Northeast sales fall by $0.95 million in the latest rolling period, and the territory is almost entirely store-led. I would identify lost, lapsed, and lower-spending store accounts before considering a regional campaign.

Test the drivers of growth in Australia, Germany, and the United Kingdom

The three territories show strong recent increases, but their customer mixes differ. The next analysis should separate new customers, changes in repeat purchasing, average order value, and product-family contribution.

Monitor concentration below territory level

California and Washington account for most sales in their respective territories. Operational planning should recognise that dependence, while any expansion case for other states should use external market evidence rather than low recorded sales alone.

Preserve both territory and shipping fields

The current mapping is clean, but a reliable regional model should continue to store commercial ownership and delivery geography separately. They may diverge as account assignments or routes to market change.

Limitations

The analysis remains constrained by the sample and analytical layer.

  • Profitability: Net sales value isn’t profit.
  • Market potential: Recorded sales don’t measure the size of the addressable market.
  • Targets: The database doesn’t contain territory quotas or plans for a fair actual-versus-target comparison.
  • Coverage: Customer and order counts don’t show salesperson capacity or account coverage quality.
  • External factors: Population, competition, economic conditions, and local marketing activity aren’t available.
  • Historical assignments: Current territory and address relationships may not describe every organisational change that occurred during the observation period.
  • Causality: Customer and product mix can explain differences in the data, but they don’t prove why those differences arose.
  • Coverage boundary: Rolling comparisons end on 30 April 2025 because store orders aren’t observed after that date.

The results provide a disciplined starting point for regional investigation. They aren’t enough to judge territory managers or allocate investment on their own.

Next in the Series

The next article will focus on time-series analysis with SQL.

I will move from two rolling periods to monthly trends, year-over-year comparisons, running totals, moving averages, and seasonality. That will help distinguish sustained changes from short-term movement.

Work with Ian

Need help turning a complex data or technology requirement into something workable?

If this post connects with a problem you are facing, I can help clarify the requirement, shape the approach, and move it toward a practical solution.