Estoy tratando de ordenar una tabla por dos columnas, cada una con una ponderación diferente. El primero es uptime
, que tiene un valor entre 0 y 1 y tiene una ponderación de 0.3. El segundo es votes
, que es un número entero no negativo y tiene una ponderación de 0.7.Usar el valor máximo de la columna en orden por
La ponderación se debe multiplicar por un valor entre 0-1, por lo que voy a obtener este para los votos dividiendo el número de votos para cada fila por el número máximo de votos en cada fila.
Ésta es mi consulta hasta el momento, y casi funciona:
SELECT addr
FROM servers
ORDER BY (0.3 * uptime) +
(0.7 * (votes/100)) DESC
El 100 es codificada y debe ser el valor máximo de votes
. El uso de MAX(votes)
hace que la consulta devuelva solo el registro con el mayor número de votos. ¿Se puede hacer esto en una sola consulta?
Creo que quiere reemplazar '' 100' por los MAX (votos) ', y no 'votos' para' MAX (votos) '. –
@aF. Gracias - corrigió ese error. – Sirko
No entiendo por qué, pero en mi base de datos esto solo devuelve la única fila con la mayor cantidad de votos. Incluso lo probé de phpmyadmin. ¿La colación importa? – Matt