Tanto como experto no lo soy, pero me imagino que recorrer toda la tabla de entradas y despues todos los votos de cada entrada para contar y dividir no va a ser realmente optimo.
Por lo que veo hay dos opciones:
1- Colocas un campo donde almacenes la media de votos para cada entrada
2- Intentas hacer las operaciones directamente desde la consulta, usando SUM y COUNT, aunque no estoy seguro que funcione, ya nos diras cuando lo pruebes:
SELECT entrada, COUNT(entrada) as votos, SUM(calificacion) as calificacion, calificacion/votos as media FROM tabla GROUP BY entrada ORDER BY media DESC LIMIT 10
Suponiendo que funcione, con esa consulta obtendrias la id de las 10 entradas mejor calificadas y te quedarian 3 opciones:
1- JOIN para obtener toda la informacion de las entradas y ejecutar todo desde la misma consulta
2- Armar una cadena para que leas las entradas con WHERE id IN (...)
3- Recorrer el resultado de votos y hacer una consulta para obtener cada entrada
Edito: Ahora que recuerdo, yo como lo hago es que en la tabla de entradas tengo un campo para votos y otro para media, cuando se agrega una nueva valoracion solo actualizo:
Cita: total = (media * votos) + nueva valoracion
votos = votos + 1
media = total / votos
Ciertamente corro el riesgo de que en algun momento uno o mas votos no sean considerados, pero es mas facil ejecutar una vez al mes un script de verificacion que hacer todas las operaciones en cada consulta.