SQL + Excel ยท MySQL ยท Dashboard
Premier League 2024/25 โ Player Statistics Analysis
Full-stack data analytics project on 562 Premier League players across 21 clubs. Built a complete pipeline from raw data to interactive Excel dashboard, using MySQL for cleaning and EDA, and Excel for visualization.
๐ Open Dashboard
- Analyzed 562 players across 21 clubs and 64 nationalities using 57 statistical columns
- Built 15 SQL queries covering top scorers, club rankings, position analysis, and discipline tables
- Used DENSE_RANK(), CTEs, and window functions to rank players within each position
- Delivered scouting-style insight: Salah (29G, 18A) contributes 47 combined goal involvements โ 2.3ร the league average for forwards, making him highest ROI signing per appearance
- Built interactive Excel dashboard with KPI cards, 4 charts, and full data sheets
WITH PlayerRanks AS (
SELECT Player_Name, Club, Position,
Goals, Assists,
Goals + Assists AS contributions,
DENSE_RANK() OVER (
PARTITION BY Position
ORDER BY Goals + Assists DESC
) AS rank_in_position
FROM epl_player_stats_24_25
WHERE Appearances >= 10
)
SELECT * FROM PlayerRanks
WHERE rank_in_position <= 5;
SQL ยท MySQL
Global Layoffs โ Data Cleaning & EDA
End-to-end SQL project on a real-world global layoffs dataset. Built a full data cleaning pipeline then performed exploratory analysis to surface industry and company-level trends.
- Removed duplicate records using ROW_NUMBER() window functions with full partition logic
- Standardized inconsistent values: trimmed whitespace, unified industry labels, fixed date formats using STR_TO_DATE()
- Handled NULL values via self-JOIN to populate missing industries from matching companies
- Ranked top 5 companies by layoffs per year using DENSE_RANK() inside CTEs
- Built rolling monthly totals using SUM() OVER() for trend visibility
MySQL
CTEs
Window Functions
Data Cleaning
EDA
WITH Rolling_Total AS (
SELECT
SUBSTRING(`date`,1,7) AS Month,
SUM(total_laid_off) AS total_off
FROM layoffs_staging2
WHERE SUBSTRING(`date`,1,7) IS NOT NULL
GROUP BY Month
ORDER BY 1 ASC
)
SELECT Month, total_off,
SUM(total_off) OVER(
ORDER BY Month
) AS rolling_total
FROM Rolling_Total;
WITH Company_year AS (
SELECT company,
YEAR(`date`), SUM(total_laid_off)
FROM layoffs_staging2
GROUP BY company, YEAR(`date`)
), Ranked AS (
SELECT *,
DENSE_RANK() OVER (
PARTITION BY years
ORDER BY total_laid_off DESC
) AS Ranking
FROM Company_year
)
SELECT * FROM Ranked
WHERE Ranking <= 5;
Tableau ยท Multi-Dataset Analysis
Airbnb Seattle โ Full Market Analysis Dashboard
End-to-end analytics project joining 3 real-world datasets (3,818 listings ยท 1M+ calendar records ยท 84,849 reviews) to uncover pricing patterns, occupancy trends, and seasonal demand cycles across Seattle's short-term rental market.
๐ Open Dashboard
- Joined Listings + Calendar + Reviews on listing_id to build a unified star-schema model
- ZIP 98134 (SoDo) leads avg pricing at $206.6/night โ waterfront proximity drives premium
- Identified January as peak occupancy month (43.7%) driven by conference demand, not tourism โ recommended hosts adjust pricing strategy to capture B2B traveller premiums
- Prepared investment recommendation: converting larger properties to short-term rentals in high-density ZIP codes yields 6ร higher ROI ($578 vs $95.7/night) โ directly actionable for property investors
- August review volume is 4.5ร higher than February โ validates true seasonal demand
- Built 6-sheet interactive dashboard: Price by ZIP, Map, Revenue/Year, Avg Price/Bedroom, Listings Count, Full Dashboard
SELECT zipcode,
ROUND(AVG(price), 1) AS avg_price,
COUNT(*) AS listings
FROM listings
GROUP BY zipcode
ORDER BY avg_price DESC;
SELECT
MONTH(date) AS month,
ROUND(SUM(available='f')*100.0
/ COUNT(*), 1) AS occupancy_pct
FROM calendar
GROUP BY month;
Power BI ยท Survey Analysis ยท HR Analytics
Data Professionals Survey โ Global Salary & Job Satisfaction Breakdown
Interactive Power BI dashboard analyzing real survey responses from data professionals worldwide โ covering salaries, job satisfaction, career paths, and demographic breakdowns across Data Analysts, Data Scientists, and related roles.
- Analyzed survey data from data professionals across multiple countries and job titles
- Broke down average salaries by role, gender, and country to surface compensation gaps
- Measured job satisfaction scores across salary, work-life balance, and management dimensions
- Visualized career entry difficulty, preferred programming languages, and industry distribution
- Built fully interactive dashboard with slicers for role, country, and gender filtering
SELECT Job_Title,
ROUND(AVG(Salary_USD), 0) AS avg_salary,
COUNT(*) AS respondents
FROM survey_data
GROUP BY Job_Title
ORDER BY avg_salary DESC;
SELECT Gender,
ROUND(AVG(Salary_Satisfaction), 1)
AS avg_salary_satisfaction,
ROUND(AVG(WorkLife_Satisfaction), 1)
AS avg_worklife_score
FROM survey_data
GROUP BY Gender;
Excel ยท Dashboard
Bike Buyers โ Customer Analysis Dashboard
Full analysis of customer purchasing behavior across demographics, regions, and income levels. Built an interactive Excel dashboard with dynamic filters to explore who buys bikes and why.
- Analyzed 1,000+ customer records across income, age, education, and commute distance
- Built Pivot Tables to segment buyers by region (Europe, Pacific, North America)
- Created interactive dashboard with Slicers for real-time filtering by gender, marital status, and region
- Identified that customers with 0โ1 mile commutes and middle incomes had the highest purchase rates
Excel ยท Sales Analysis
Global Sales Report โ Multi-Country Revenue Dashboard
Comprehensive sales analysis across 6 countries (US, Australia, UK, Germany, France, Canada) spanning 2011โ2016, with $85M+ in total revenue tracked.
- Built Pivot Table comparing Revenue, Cost, and Profit by country and year
- Identified the United States as top market at $28M revenue, Australia second at $21M
- Tracked year-over-year growth showing 2015 as peak year at $20M total revenue
- Created dynamic charts to visualize revenue trends across product categories
Excel ยท Data Cleaning
US Presidents Dataset โ Data Cleaning & Standardization
Applied professional data cleaning techniques to a historical US Presidents dataset, fixing date formats, removing duplicates, and standardizing inconsistent entries.
- Identified and removed duplicate records (e.g. Woodrow Wilson duplicate row)
- Converted Excel serial numbers to readable date formats
- Standardized party names and removed extra whitespace using TRIM functions
- Documented all cleaning steps for full reproducibility
Excel ยท Advanced Formulas
HR Employee Lookup System โ XLOOKUP & INDEX/MATCH
Built a dynamic employee data retrieval system using XLOOKUP with exact, partial, and multi-column match modes โ demonstrating mastery of Excel's most powerful lookup functions.
- Implemented XLOOKUP with exact match, partial match, and wildcard scenarios
- Built multi-column return to fetch Name, Email, Salary, and End Date in one formula
- Added error handling using XLOOKUP's if_not_found parameter ("Not found")
- Applied across employee dataset of 9 staff records with full HR data
Excel ยท Visualization
Sales & HR Dashboard โ Conditional Formatting & Charts
Applied advanced conditional formatting rules and chart design to visualize monthly sales data for Dunder Mifflin paper products and employee HR metrics.
- Applied color-scale conditional formatting to highlight performance outliers
- Tracked 12-month sales across 3 product lines (Paper, Printers, Manila Folders)
- Built bar and line charts for Sales Report with Year End Totals
- Combined HR demographic data with salary ranges for visual reporting
Python ยท BeautifulSoup ยท Pandas ยท Web Scraping
US Fortune 500 โ Web Scraping & Revenue Analysis
Built a complete web scraping pipeline in Python to extract the largest US companies by revenue directly from Wikipedia's HTML โ no API, no CSV download. Parsed raw HTML tables using BeautifulSoup, structured data with Pandas, and surfaced key revenue and industry insights.
- Scraped 50+ companies across 7 data columns using requests + BeautifulSoup HTML parsing
- Applied browser-like User-Agent headers to handle bot detection on live web pages
- Identified Healthcare (35%) as the dominant industry in the Fortune 500 top 20
- Walmart leads at $648B revenue โ 13% ahead of Amazon; Marathon Petroleum top growth at 74.4%
scraping_fortune500.py
from bs4 import BeautifulSoup
import requests, pandas as pd
# Fetch Wikipedia table
page = requests.get(url, headers=hdrs)
soup = BeautifulSoup(page.text)
table = soup.find_all('table')[0]
# Extract & structure data
for row in column_data[1:]:
df.loc[len(df)] = row_data
# Export
df.to_csv('fortune500.csv')
โ 50+ companies ยท 7 columns scraped