Created September 2016, originally created January 2009.
Using GROUP_CONCAT()
This was a breakthrough for me when I discovered GROUP_CONCAT() back in 2009. I wish I could remember the project better.
SELECT email AS `email` , group_concat( DISTINCT group_name ORDER BY group_name separator ', ' ) AS `groups` , count(votes.id) AS `# votes` FROM users_and_groups , users LEFT OUTER JOIN votes ON users.id = votes.user_id WHERE users_and_groups.user_id = users.id GROUP BY users_and_groups.user_id ORDER BY is_admin DESC , groups , email ASC