A SQL-based backend system to track post engagement on a social media platform. Built with PostgreSQL, it handles user activity such as posts, likes, and comments — and generates engagement reports using views, window functions, and triggers.
Create a SQL system to:
- Track user interactions
- Analyze post engagement
- Rank top posts by engagement
- Export reports as CSV
- Database: PostgreSQL
- Data Generator: Python (
Faker,psycopg2) - Tools: SQL Shell (psql), pgAdmin
users— stores user infoposts— stores user postslikes— tracks which user liked which postcomments— stores post comments
users(id, username, email, created_at)
posts(id, user_id, content, created_at, like_count, comment_count)
likes(id, user_id, post_id, created_at)
comments(id, user_id, post_id, content, created_at)A SQL view post_engagement to calculate:
engagement_score = likes + commentsRANK() window function used to list top posts.
Automatic updates to like_count and comment_count on new likes/comments.
Export engagement data:
\COPY (SELECT * FROM post_engagement) TO 'post_engagement_report.csv' WITH CSV HEADER;Used Python + Faker to populate realistic:
- Users
- Posts
- Likes (ensuring no duplicates)
- Comments
pip install faker psycopg2-binary- ✅ SQL schema
- ✅ Views & queries
- ✅ Triggers for data updates
- ✅ Engagement reports (CSV)
postgresql_social_analytics/
├── schema.sql
├── generate.py
├── triggers.sql
├── views.sql
├── post_engagement_report.csv
└── README.md
- Weekly active users report
- Top commenters
- REST API or dashboard UI