Data Analyst Portfolio Project Template: SQL, Metrics, Dashboard, and Case Study
A practical template for turning a project into an analyst deliverable that shows business thinking, SQL ability, metric logic, visual judgment, and recommendation writing.
What a portfolio project should prove
A strong data analyst portfolio project should not only show charts. It should prove that you can define a business question, prepare data, calculate metrics, find a pattern, and recommend a next action.
The best portfolio projects feel like analyst work, not homework. "I built a dashboard" is weaker than "I diagnosed which customer segment drove a repurchase-rate decline and recommended a follow-up analysis."
Copy this portfolio project template
Project title:
Business question:
Dataset:
Key tables and fields:
Metric definitions:
SQL workflow:
Dashboard or visuals:
Main finding:
Recommendation:
Caveats:
Next analysis:
Start with a business question
Choose a question that sounds like work an analyst would actually do:
- Which channel drove the conversion rate drop?
- Which customer cohort has the strongest repeat purchase behavior?
- Which product category contributes most to revenue growth?
- Where does the signup funnel lose the most users?
- Which segment should a retention campaign target first?
Document the dataset
Describe the source, fields, time range, cleaning rules, and limitations. Include a short data dictionary so readers understand what each metric is based on.
Data dictionary example:
orders.order_id: unique order identifier
orders.customer_id: customer identifier
orders.order_date: completed order date
orders.order_value: revenue before refunds
orders.order_status: completed, refunded, canceled
customers.acquisition_channel: first known acquisition source
Show the SQL workflow
Include a query that demonstrates grouping, filtering, joins, and metric logic. The query does not need to be complicated, but it should be connected to the business question.
SELECT
c.acquisition_channel,
COUNT(DISTINCT o.customer_id) AS buyers,
COUNT(DISTINCT o.order_id) AS orders,
SUM(o.order_value) AS revenue,
1.0 * COUNT(DISTINCT o.order_id) / NULLIF(COUNT(DISTINCT o.customer_id), 0) AS orders_per_buyer
FROM orders o
JOIN customers c
ON o.customer_id = c.customer_id
WHERE o.order_status = 'completed'
GROUP BY 1
ORDER BY revenue DESC;
Choose visuals that support the finding
Use a line chart for trends, a bar chart for segment comparison, a funnel chart for step conversion, and a table when exact values matter. Do not include every chart you created.
Write the case study summary
The final project page should read like a concise analyst memo.
Case study summary:
Business question: Which acquisition channel drove the revenue decline?
Method: Compared revenue drivers by channel and decomposed buyers, orders, and AOV.
Finding: Paid social explained 42% of the decline because buyer volume dropped sharply.
Recommendation: Review campaign budget and audience targeting before changing product pages.
Caveat: Attribution is based on first-touch channel and may miss later campaign exposure.
Common portfolio mistakes
- Using a public dataset without a business question.
- Showing many visuals without a clear finding.
- Hiding the SQL and only showing dashboard screenshots.
- Ending with observations instead of recommendations.
- Ignoring caveats and data limitations.
Read next
Use the data analyst interview case study guide to turn this project into interview answers. If you need a starter project idea, use the conversion rate analysis template.