¿Cómo contar y agrupar consultas para get los resultados adecuados?

Tengo un problema, por favor mira mi database:

------------------- | id | article_id | ------------------- | 1 | 1 | | 2 | 1 | | 3 | 1 | | 4 | 2 | | 5 | 2 | | 6 | 3 | | 7 | 3 | | 8 | 3 | | 9 | 3 | | 10 | 3 | 

Y quiero recibir algo como esto (orderar por votos, de máximo a mínimo):

 --------------------------- | id | article_id | votes | --------------------------- | 1 | 3 | 5 | | 2 | 1 | 3 | | 3 | 2 | 2 | 

¿Podrías ayudarme a escribir una consulta SQL adecuada?

 SELECT article_id, COUNT(article_id) AS votes FROM votes_table GROUP BY article_id ORDER BY votes DESC; 
 SET @currentRow = 0; SELECT @currentRow := @currentRow + 1 AS id, t.article_id, tc AS `votes` FROM ( SELECT article_id, count(*) as `c` FROM table_votes GROUP BY article_id ) t ORDER BY tc DESC 

tenga en count que no puede seleccionar una columna de identificación como esta en este context, y su "resultado esperado" es incorrecto. Traté de adaptarlo al máximo.

aclamaciones