SELECT
  u.id AS vereador_id,
  u.nome AS vereador_nome,
  u.partido,
  SUM(v.voto = 'sim') AS votos_sim,
  SUM(v.voto = 'nao') AS votos_nao,
  SUM(v.voto = 'abstencao') AS votos_abstencao,
  SUM(v.voto = 'ausente') AS votos_ausente,
  COUNT(*) AS total_votos
FROM votos v
JOIN sessao_materias sm ON sm.id = v.sessao_materia_id
JOIN sessoes s ON s.id = sm.sessao_id
JOIN usuarios u ON u.id = v.vereador_id
WHERE s.data_sessao BETWEEN :data_ini AND :data_fim
GROUP BY u.id, u.nome, u.partido
ORDER BY total_votos DESC, vereador_nome ASC