🚴 Bike Ride Data Analysis using SQL
📌 Project Overview
This project focuses on analyzing a bike-sharing dataset using SQL to answer practical, business-oriented questions.
The goal is to move beyond basic query writing and demonstrate analytical thinking, data validation, and insight generation.
The analysis simulates how a data analyst would explore ride behavior, station usage, and user growth patterns in a real-world scenario.
📂 Dataset Description
The project uses three CSV files:
1. rides.csv
- Transactional ride-level data.
- ride_id – Unique ride identifier
- user_id – User who took the ride
- start_station_id, end_station_id – Station identifiers
- start_time, end_time – Ride timestamps
- distance_km – Distance traveled (in kilometers)
2. users.csv
- User-level information.
- user_id – Unique user identifier
- username
- age
- membership_level – Casual / Membership tier
- created_at – Account creation date
3. stations.csv
- Station master data.
- station_id – Unique station identifier
- station_name
- capacity
- latitude, longitude
🛠 Tools & Technologies
- MySQL
- SQL concepts used:
- JOIN
- CASE
- Aggregate functions
- Date & time functions
- Common Table Expressions (CTEs)
- Window functions (LAG)
🔍 Analysis Performed
1. Data Exploration
Total records in each table
Ride distance and duration summary statistics
2. Data Quality Checks
Detection of very short rides (possible false starts)
Zero-distance rides
3. User Segmentation Analysis
Ride count, average distance, and duration by membership level
4. Time-Based Analysis
Peak riding hours during the day
5. Station Performance
Most popular starting stations
Net bike flow per station (arrivals vs departures)
6. Ride Categorization
Classification of rides into:
Short (<10 minutes)
Medium (11–30 minutes)
Long (>30 minutes)
7. User Growth Analysis
> Month-over-month user signup growth using window functions