This project analyzes a pizza store's sales data using SQL and Excel to uncover key business insights and visualize performance through an interactive dashboard.
The goal of the project is to transform raw sales data into meaningful insights by calculating key performance indicators (KPIs), performing trend analysis, and presenting the results in a visually engaging Excel dashboard.
The analysis focuses on answering important business questions such as:
- How much revenue does the pizza store generate?
- When are the busiest ordering hours and days?
- Which pizza categories and sizes drive the most revenue?
- What are the best and worst performing pizzas?
The project aims to:
- Measure overall business performance using key KPIs
- Identify peak ordering times
- Understand customer purchasing patterns
- Analyze product performance across pizza categories and sizes
- Identify top and bottom selling pizzas
The dataset contains transaction-level pizza sales information including:
order_idpizza_namepizza_categorypizza_sizequantityorder_dateorder_timeunit_pricetotal_price
| Tool | Purpose |
|---|---|
| SQL Server / SSMS | Data analysis and KPI calculation |
| Excel | Data visualization and dashboard creation |
| Git & GitHub | Version control and project portfolio |
The following KPIs were calculated using SQL queries (Check out the raw SQL files here: Queries) :
Total sales generated from all pizza orders.
SELECT SUM(total_price) AS Total_Revenue
FROM pizza_sales;Average revenue generated per order.
SELECT (SUM(total_price) / COUNT(DISTINCT order_id)) AS Avg_order_Value
FROM pizza_sales;Total number of pizzas sold across all orders.
SELECT SUM(quantity) AS Total_pizza_sold
FROM pizza_sales;Total number of unique orders placed.
SELECT COUNT(DISTINCT order_id) AS Total_Orders
FROM pizza_sales;Average number of pizzas purchased per order.
SELECT CAST(
CAST(SUM(quantity) AS DECIMAL(10,2)) /
CAST(COUNT(DISTINCT order_id) AS DECIMAL(10,2))
AS DECIMAL(10,2)
) AS Avg_Pizzas_per_order
FROM pizza_sales;Analyzes which days generate the highest number of orders.
SELECT DATENAME(DW, order_date) AS order_day,
COUNT(DISTINCT order_id) AS total_orders
FROM pizza_sales
GROUP BY DATENAME(DW, order_date);Insight Orders are highest during Friday and Saturday evenings.
Identifies peak hours when customers place orders.
SELECT DATEPART(HOUR, order_time) AS order_hours,
COUNT(DISTINCT order_id) AS total_orders
FROM pizza_sales
GROUP BY DATEPART(HOUR, order_time)
ORDER BY DATEPART(HOUR, order_time);Peak ordering times occur around:
- 12 PM – 1 PM
- 5 PM – 7 PM
Indicates which pizza category earns the most sales
SELECT pizza_category,
CAST(SUM(total_price) AS DECIMAL(10,2)) AS total_revenue,
CAST(SUM(total_price) * 100 /
(SELECT SUM(total_price) FROM pizza_sales)
AS DECIMAL(10,2)) AS PCT
FROM pizza_sales
GROUP BY pizza_category;The Classic category generates the highest share of sales, closely followed by Supreme category.
| pizza_category | PCT |
|---|---|
| Classic | 26.91% |
| Supreme | 25.46% |
| Chicken | 23.96% |
| Veggie | 23.68% |
Shows which pizza size generates the most revenue.
SELECT pizza_size,
CAST(SUM(total_price) AS DECIMAL(10,2)) AS total_revenue,
CAST(SUM(total_price) * 100 /
(SELECT SUM(total_price) FROM pizza_sales)
AS DECIMAL(10,2)) AS PCT
FROM pizza_sales
GROUP BY pizza_size
ORDER BY pizza_size;Large size pizza earns the most sales
| pizza_size | PCT |
|---|---|
| Large | 38.05% |
| Medium | 31.65% |
| Small | 29.06% |
| X-Large | 1.17% |
| XX-Large | 0.07% |
SELECT TOP 5 pizza_name,
SUM(quantity) AS Total_Pizza_Sold
FROM pizza_sales
GROUP BY pizza_name
ORDER BY Total_Pizza_Sold DESC;- The Classic Deluxe Pizza generates the highest sales.
SELECT TOP 5 pizza_name,
SUM(quantity) AS Total_Pizza_Sold
FROM pizza_sales
GROUP BY pizza_name
ORDER BY Total_Pizza_Sold ASC;- The Brie Carre Pizza has the lowest sales.
The insights from SQL analysis were visualized in an interactive Excel dashboard.
Dashboard components include:
- KPI summary cards
- Daily order trend
- Hourly order trend
- Sales breakdown by pizza category
- Sales distribution by pizza size
- Top 5 best selling pizzas
- Bottom 5 least selling pizzas
- Interactive date filters
Pizza-Sales-Analysis
|
├── Dashboard
│ └── dashboard.png
|
├── Queries
│ └── SQL analysis queries
|
├── pizza_sales.csv
│ └── dataset
│
├── Workbook.xlsx
│ └── Excel dashboard
│
├── PIZZA SALES SQL QUERIES.docx
│ └── documented queries
│
└── README.md
- Total Revenue: $817,860
- Total Orders: 21,350
- Total Pizzas Sold: 49,574
- Average Order Value: $38.31
- Average Pizzas Per Order: 2.32
Additional insights:
- Friday and Saturday evenings are peak ordering times
- Large pizzas contribute the highest share of revenue
- Classic category pizzas generate the most sales
- The Classic Deluxe Pizza is the best-selling item
Thanks for checking out my Pizza Sales Analysis project!
If you like it, feel free to ⭐ the repo or fork it for your own use.
- GitHub:
- LinkedIn:
- Email: pallabdey21@gmail.com
Open to feedback, collaboration, or just chatting about data analysis / BI projects 🍕📊
© 2026 Pallab Dey
