PostgreSQL · Python · matplotlib
Updated:
Role: Independent Analyst · Time: 2025 · Stack: Python • SQL • PostgreSQL • matplotlib · Output: session dashboards for non-technical stakeholders
ioVote produces session results (options, turnout, activity over time). Stakeholders needed fast, visual summaries without manual spreadsheet work.
sessions
, votes
, options
WITH votes_per_option AS (
SELECT v.session_id, v.option_id, COUNT(*) AS votes
FROM votes v
GROUP BY v.session_id, v.option_id
)
SELECT o.option_text, vpo.votes
FROM votes_per_option vpo
JOIN options o ON o.id = vpo.option_id
WHERE vpo.session_id = :session_id
ORDER BY vpo.votes DESC;