• 3 tables
  • 12,855 rows
  • 7 formats
  • synthetic data

Sales Dataset for Analysis and Practice

This ready-made sales dataset is ideal for analysts looking to practice their skills in Power BI and Excel. It includes detailed information across customers, products, and sales transactions. Preview rows are available for free, with the full dataset downloadable using credits.

  • last updated 3 Nov 2026
  • by GoMask
  • Dataset contains 3 tables: customers, products, and sales.
  • Includes 12,855 sales transactions.
  • Covers sales data from 2023-01-11 to 2025-12-31.
  • Features 21 columns across all tables.
  • Available in CSV, Excel, SQL, and other formats.

At a glance

  • 3tables
  • 12,855rows
  • 21columns
  • Jan 2023 – Dec 2025date range

The 3 tables

preview and data dictionary per table

Customers customers · table · 5,000 rows

Information about retail customers.

Preview

First 10 of 5,000 rows of the Customers table
customer_iduuidfirst_namestringlast_namestringemailstringcitystringstatestringcustomer_segmentstringloyalty_tierstringsignup_datedate
64e6748b-8eaf-40a5-8347-e646a4ffaa93MariaSmith[email protected]New YorkNYConsumerBronze2024-10-01
da6cfcdc-3813-45ff-9d16-d25eaf3df3f4DavidSullivan[email protected]Los AngelesCAConsumerBronze2025-12-06
f6020004-cca9-4bf3-bb4e-d0db84616d8cMariaStewart[email protected]ChicagoILConsumerBronze2024-02-14
62aa5f32-25e9-4eab-85dd-47284f24c62eJamesScott[email protected]HoustonTXConsumerBronze2024-11-30
7b27c774-5d4a-4edc-96f7-7fbc7eb566f3OliviaSanders[email protected]PhoenixAZConsumerBronze2024-07-27
f9ff76c9-e3e5-43f9-99e4-20a39912ade1WilliamSimmons[email protected]PhiladelphiaPAConsumerSilver2023-12-03
41856399-c461-44b3-a4f5-10688198719bAvaSanchez[email protected]San AntonioTXConsumerBronze2024-08-17
237d76e7-9554-47f1-917c-81ff9bd00947MichaelStewart[email protected]San DiegoCAConsumerBronze2023-07-08
2031bba1-4ddb-4936-bdfb-6e3498a5fd75IsabellaSmith[email protected]DallasTXConsumerBronze2025-01-03
59d28aa5-ef52-47b5-b67c-4b22b1b48a51AlexanderScott[email protected]AustinTXConsumerBronze2025-04-29
10 of 5,000 rows · 9 columns

Data dictionary

Data dictionary for the Customers table
columntypedescriptionexamplenull %
customer_iduuidUnique identifier for each retail customer.unique64e6748b-8eaf-40a5-8347-e646a4ffaa930%
first_namestringGiven name of the customer.Maria0%
last_namestringSurname or family name of the customer.Smith0%
emailstringPrimary email contact address for the customer.unique[email protected]0%
citystringUS city where the customer resides or is registered.New York0%
statestringUS state abbreviation for the customer's billing or store location.NY0%
customer_segmentstringMarket classification segment for the customer.Consumer0%
loyalty_tierstringRetail membership program tier reflecting customer loyalty.Bronze0%
signup_datedateDate when the customer profile or loyalty membership was initiated.2024-10-010%

Products products · dimension table · 100 rows

Details about the products available for sale.

Preview

First 10 of 100 rows of the Products table
product_iduuidproduct_namestringcategorystringpricedecimal
c66ae24f-7ff2-4550-b1ee-695281ff640bProfessional 4K UHD Camcorder with 20x Optical ZoomElectronics1464.68
9da35863-7f7a-490e-b4e7-71256cf85ca8High-Fidelity Noise-Cancelling Over-Ear HeadphonesElectronics184.38
4c3a623e-84e1-4d3c-819a-5f61339b1a5cSmart Home Security System with 8 Cameras and Cloud StorageElectronics1167.01
41c60ae0-1448-4616-b98c-d5c49cdf6ea9Ultra-Thin 15-inch QHD Laptop with 16GB RAMElectronics1061.5
44b8bc2b-6546-460a-9ddb-09170213dfa5Wi-Fi Enabled Robotic Vacuum Cleaner with Self-Emptying BaseElectronics1315.62
becefc35-9756-44a1-9a35-608b48a31b64Portable 1TB External Solid State Drive with USB-CElectronics853.96
b7620257-fabf-498f-8b85-7c3ae3ec86d3Compact Espresso Machine with Integrated GrinderElectronics783.42
7d942fdf-336d-4413-88b5-d9c339a647e1Ergonomic Wireless Gaming Mouse with RGB LightingElectronics589.38
5f6da2fb-6906-4075-8033-66689ee8f6faBluetooth Smart Speaker with Voice Assistant IntegrationElectronics206.44
32c46618-e757-487a-b280-59736dc884e56-Quart Digital Air Fryer with Multiple Cooking PresetsElectronics235.09
10 of 100 rows · 4 columns

Data dictionary

Data dictionary for the Products table
columntypedescriptionexamplenull %
product_iduuidUnique identifier for the product item in the retail catalog.uniquec66ae24f-7ff2-4550-b1ee-695281ff640b0%
product_namestringDescriptive retail name of the product item.uniqueProfessional 4K UHD Camcorder with 20x Optical Zoom0%
categorystringMerchandise category to which the product belongs.Electronics0%
pricedecimalStandard retail list price of the product in USD.1464.680%

Sales sales · fact table · 7,755 rows

Records of individual sales transactions.

Preview

First 1 of 7,755 rows of the Sales table
sale_iduuidsale_datedatequantityintegerunit_pricedecimaldiscount_percentdecimaltotal_sale_amountdecimalcustomer_iduuidproduct_iduuid
96df8e6a-4c6f-432c-8a28-b351f41c9b2a2024-08-26225.7425.638.37b27c774-5d4a-4edc-96f7-7fbc7eb566f39748d119-6cfe-4ef0-9870-b3b72601b032
1 of 7,755 rows · 8 columns

Data dictionary

Data dictionary for the Sales table
columntypedescriptionexamplenull %
sale_iduuidUnique transaction record identifier.ec776ae5-eed1-4837-b938-83c93caf5d650%
sale_datedateDate of the retail point-of-sale purchase.2025-10-060%
quantityintegerQuantity of the product purchased in the transaction.10%
unit_pricedecimalUnit selling price of the product at time of transaction.19.770%
discount_percentdecimalDiscount percentage applied to the line item, from 0% to 30%.210%
total_sale_amountdecimalTotal line amount equal to quantity * unit_price * (1 - discount_percent / 100).15.620%
customer_iduuidForeign key to customers.customer_id.f5295826-0a5f-4ea6-bb14-bd5f9efed8f70%
product_iduuidForeign key to products.product_id.019156aa-3c27-42c1-ae51-be954fc234610%

How the tables join

  • sales.customer_id references customers.customer_idmany to one: each Sales row points to one Customers row
  • sales.product_id references products.product_idmany to one: each Sales row points to one Products row

Questions to answer with it

  1. What is the total revenue generated by each product category?

    Join sales and products tables on product_id, then group by products.category and sum sales.total_sale_amount.

    tables: sales, products

  2. Which customers are repeat buyers and what is their average purchase value?

    Join sales and customers tables on customer_id. Group by customer_id and count the number of sales. Filter for customers with more than one sale and calculate the average total_sale_amount.

    tables: sales, customers

  3. Analyze the seasonality of sales over different periods.

    Extract the month and year from sale_date. Create a pivot table or use GROUP BY to show total sales by month and year.

    tables: sales

  4. What is the average discount percentage applied to sales?

    Calculate the average of the discount_percent column in the sales table.

    tables: sales

Starter SQL

run against this data before publishing

Table names match the SQLite file and the SQL script.

Total Sales Amount by Product Category

sql
SELECT p.category, SUM(s.total_sale_amount) AS total_revenue
FROM sales s
JOIN products p ON s.product_id = p.product_id
GROUP BY p.category
ORDER BY total_revenue DESC
LIMIT 20;

Top 20 Customers by Total Spending

sql
SELECT c.customer_id, c.first_name, c.last_name, SUM(s.total_sale_amount) AS total_spent
FROM customers c
JOIN sales s ON c.customer_id = s.customer_id
GROUP BY c.customer_id, c.first_name, c.last_name
ORDER BY total_spent DESC
LIMIT 20;

Monthly Sales Trend

sql
SELECT STRFTIME('%Y-%m', s.sale_date) AS sale_month, SUM(s.total_sale_amount) AS monthly_revenue
FROM sales s
GROUP BY sale_month
ORDER BY sale_month
LIMIT 20;

Product with Highest Average Unit Price

sql
SELECT product_id, AVG(unit_price) AS average_unit_price
FROM sales
GROUP BY product_id
ORDER BY average_unit_price DESC
LIMIT 20;

Load it with pandas

python
import pandas as pd

# Unzip the CSV download first: one file per table
customers = pd.read_csv("customers.csv")
products = pd.read_csv("products.csv")
sales = pd.read_csv("sales.csv")

# Join sales to customers
df = sales.merge(customers, left_on="customer_id", right_on="customer_id", how="left", suffixes=("", "_customers"))
print(df.groupby("customer_segment").size().sort_values(ascending=False))

Using it in your tool

Excel
Load each table into a separate sheet. Use Power Query to join tables based on their respective IDs (e.g., customer_id, product_id). Create a PivotTable from the joined sales data to analyze revenue by product category or customer segment.
Power BI
Create relationships between the customers, products, and sales tables using the customer_id and product_id keys to establish a star schema. Develop DAX measures for Total Sales (SUM(sales[total_sale_amount])) and Average Discount (AVERAGE(sales[discount_percent])).
SQL
Load the sales, customers, and products tables into your SQL database. Use JOIN clauses on customer_id and product_id to combine data for analysis. For example, to find total sales per category: SELECT p.category, SUM(s.total_sale_amount) FROM sales s JOIN products p ON s.product_id = p.product_id GROUP BY p.category.
Python
Use pandas to load the CSV files. Merge the dataframes on common keys (customer_id, product_id). Perform aggregations and analyses using pandas functions like groupby(), agg(), and merge().

Formats available

  • CSV (zip)One CSV file per table, zipped
  • Excel workbookOne worksheet per table
  • SQLite databaseA ready-to-query database file with every table
  • Parquet (zip)One Parquet file per table, zipped
  • SQL scriptCREATE TABLE with primary and foreign keys, then INSERTs
  • CSVA single CSV file
  • JSONA single JSON file

How this data was generated

Synthetic data. Every row was generated: no real people, customers or companies are in this dataset.

Synthetic data generated by GoMask DataFactory from a relational blueprint: keys, links and rules are enforced in code, text columns are filled by a language model. No real people, companies or transactions.

  • The dataset was generated using GoMask DataFactory.
  • It simulates retail sales transactions with associated customer and product information.
  • Data includes realistic distributions for quantities, prices, and discounts.
  • Checked by an automated quality gate: unique keys, no orphan foreign keys, required columns filled, declared rules and date ranges (realism score 100).

Limitations

  • The dataset is synthetic and does not represent real-world individuals or transactions.
  • Geographic data is limited to US cities and states.
  • Discount percentages are capped at 30%.
  • Distributions and correlations are modelled, not measured from real records.

blueprint · sales-dataset

Scale this dataset

Same tables. As many rows as you need.

Open the blueprint behind these 3 tables in Data Factory: keep the relationships, change a column, and generate it at the size you need.

  • 200,000 rows
  • 1,000,000 rows
Scale this dataset in Data Factory
Tables
customers, products, sales
Licence
yours to use, including commercially
API slug
sales-dataset

What should your data show?

Preview 20 rows free
No signup. No card.