This project presents a comprehensive Election Data Analysis using SQL, designed to uncover deep insights into party performance, voter trends, and constituency-level outcomes across India.
It showcases the end-to-end workflow of a real-world data analyst β from data modeling and database creation to complex analytical queries and visualization-ready outputs.
To analyze large-scale election data and extract meaningful insights such as:
- Seats won by different political parties and alliances
- State-wise and constituency-wise vote distributions
- EVM vs Postal vote comparisons
- Winning margins and top-performing candidates
- Alliance-wise performance summaries across India
βββ Create_table_query.sql # All CREATE TABLE Query
βββ Problems.txt # List of analysis questions
βββ Solutions.sql # All SQL analysis queries
βββ Election_data.zip # Contains 5 CSV datasets
βββπimages/
β βββ ER_Diagram.png # Schema diagram
β βββ Output.png # Query Output example
βββ README.md # Project documentation
-
Designed relational schema with 5 key tables:
constituencywise_details
constituencywise_results
statewise_results
statewise_results_analysis
partywise_results
-
Established foreign key relationships between constituency, state, and party tables.
-
Added computed and derived columns such as
party_alliance
for advanced analytics.
π ER Diagram:
- Data Definition (DDL): Table creation, constraints, and relationships
- Data Manipulation (DML): Inserting, updating, and transforming raw data
- Aggregations:
SUM()
,COUNT()
,AVG()
,GROUP BY
,HAVING
- Conditional Logic:
CASE WHEN
for alliance classification - Joins: Inner, Left, and multi-table joins for relational insights
- Subqueries & CTEs: Extracting top candidates and runner-ups
- Window Functions: Ranking and comparison of candidates
- Data Enrichment: Adding new analytical columns for deeper insights
Some of the key analyses performed include:
# | Analysis | Description |
---|---|---|
1 | Total Seats | Find total number of parliamentary seats |
2 | State-wise Seats | Seats available per state |
3 | NDA Alliance Performance | Seats won by NDA alliance parties |
4 | I.N.D.I.A Alliance Performance | Seats won by I.N.D.I.A alliance parties |
5 | Party-wise Seat Count | Seats won per party in each state |
6 | Alliance-wise Distribution | Seats won by alliances across all states |
7 | EVM vs Postal Votes | Compare total votes from both sources |
8 | Top 10 Candidates | Highest EVM votes across constituencies |
9 | Winner & Runner-Up | Find top 2 candidates in every constituency |
10 | Maharashtra Analysis | State-level party and alliance performance summary |
Problem: Which candidate won and which candidate was the runner-up in each constituency of State for the 2024 elections
WITH RankedCandidates AS (
SELECT cd.constituency_id,cd.candidate,cd.party,
cd.evm_votes,cd.postal_votes,cd.total_votes,
ROW_NUMBER() OVER (PARTITION BY cd.constituency_id
ORDER BY cd.total_votes DESC) AS VoteRank
FROM constituency_details cd
JOIN constituency_results cr ON cr.constituency_id = cd.constituency_id
JOIN statewise_results sr ON
sr.parliament_constituency = cr.parliament_constituency
JOIN states s ON s.state_id = sr.state_id
WHERE s.state = 'Maharashtra'
)
SELECT cr.constituency_name,
MAX(CASE WHEN rc.VoteRank = 1 THEN rc.candidate END) AS Winning_Candidate,
MAX(CASE WHEN rc.VoteRank = 2 THEN rc.candidate END) AS Runnerup_Candidate
FROM RankedCandidates rc
JOIN constituency_results cr ON cr.constituency_id = rc.constituency_id
GROUP BY cr.constituency_name
ORDER BY cr.constituency_name;
Category | Tools |
---|---|
Database | PostgreSQL / MySQL |
Language | SQL |
Visualization | Power BI (optional for future) |
Data Format | CSV |
Skills Highlighted | Data Cleaning, Joins, Aggregation, Analytical Thinking |
- Designed a relational data model for real-world election data
- Applied advanced SQL analytics (CTEs, window functions, subqueries)
- Created alliance-based classification logic (NDA, I.N.D.I.A, Others)
- Generated insightful summaries for national and state levels
- Delivered clean, presentation-ready output for reporting tools
- Strengthened SQL skills in data modeling, transformation, and analysis
- Improved understanding of real-world relational data handling
- Developed reusable query patterns for future analytics projects
- Import all
.csv
files from/Election_data/
into your SQL database. - Run the scripts from
Create_table_query.sql
to create tables. - Execute queries from
Solutions.sql
to reproduce all analytical results. - Refer to
Problems.txt
for understanding each analysis objective.
An end-to-end SQL data analysis project on Indian Election data β from database design and schema creation to complex query-based insights.
This project demonstrates my ability to work with relational databases, data cleaning, aggregation, and analytical query optimization, making it a strong showcase for real-world data analytics skills.
π€ Harsh Belekar
π Data Analyst | Python | SQL | Power BI | Excel | Data Visualization
π LinkedIn | GitHub
sql
β’ data-analysis
β’ postgresql
β’ election-data
β’ data-cleaning
β’ joins
β’ ctes
β’ window-functions
β’ end-to-end-project
β’ data-analytics