Hoy me realizaron una consulta: Si habia alguna forma de hacer una consulta que te devuelva el nro. de fila, pero que no este relacionado con ningun campo de la tabla?
Por ejemplo, si tenemos una tabla que es un ranking, se puede ordenar en funcion del puntaje y que nos devuelva una columna que nos dice la posicion dentro del ranking.
Suponemos que tenemos una tabla como esta, con estos datos:
CREATE TABLE `ranking` (
`jugadores` varchar(255) default NULL,
`puntaje` int(11) default NULL
);
INSERT INTO `ranking` VALUES ('Juan', '10');
INSERT INTO `ranking` VALUES ('Jose', '11');
INSERT INTO `ranking` VALUES ('Pedro', '12');
INSERT INTO `ranking` VALUES ('Guillermo', '22');
INSERT INTO `ranking` VALUES ('Pablo', '14');
Queremos ordenar los registros por el campo puntaje de mayor a menor, y que nos devuelva tres filas: posicion, jugadores y puntaje.
Para ello podriamos hacer una consulta como esta:
SET @row=0;
SELECT @row:= @row + 1 as posicion,jugadores,puntaje FROM ranking ORDER BY puntaje DESC;
Tendriamos un resultado como el siguiente:
posicion | jugadores | puntaje |
1 | Guillermo | 22 |
2 | Pablo | 14 |
3 | Pedro | 12 |
4 | Jose | 11 |
5 | Juan | 10 |
SET @row=0;# MySQL ha devuelto un valor vacío (i.e., cero columnas).
ResponderEliminarSELECT codigo, @row:= @row+1 AS Puesto, round( avg( notadefinitivaperiodo ) , 2)AS promedio
FROM notas
WHERE periodo =2
AND curso =311
GROUPBY codigo
ORDERBY promedio DESC