Si alguna vez se han preguntado como hacer para obtener un resultado similar al de la funcion TOP de SQL Server o LIMIT de MySQL simplemente tienen que hacer:
ORACLE
SELECT * FROM Tabla1 WHERE rownum <= 10
SQL Server 2005
SELECTtop 10 * FROM Tabla1
MySQL
SELECT * FROM Tabla1 LIMIT 10
Nuevamente los pañales
Hace 9 años
4 comentarios:
Lamento decirte que para Oracle, el rownum no funciona cuando tenés un ordenamiento.
Podés verlo haciendo:
SELECT * FROM Tabla WHERE Rownum < 3
y comparalo con esto:
SELECT * FROM Tabla WHERE Rownum < 3 ORDER BY UnaColumna
El Rownum solo toma el conjunto de registros seleccionados, ANTES de aplicar el ordenamiento.
No tengo a mano nada para ejemplificar, pero te puedo asegurar que es así.
Saludos
Pit
-- mostrar el salario maximo de un grupo de trabajadores job
SQL> select job, sum(sal) from emp
2 group by job
3 having sum(sal)>5000;
4
SQL> /
JOB SUM(SAL)
--------- ----------
SALESMAN 5600
MANAGER 8275
ANALYST 6000
-- mostrar el maximo salario del grupo usando rownum
SQL> select rownum, t.* from
2 (
3 select e.job, sum(e.sal)
4 from emp e
5 group by e.job
6 having sum(e.sal) > 5000
7 order by 2 desc
8 )t
9 where rownum=1;
ROWNUM JOB SUM(E.SAL)
---------- --------- ----------
1 MANAGER 8275
-- mostrar el salario maximo de un grupo de trabajadores job
SQL> select job, sum(sal) from emp
2 group by job
3 having sum(sal)>5000;
4
SQL> /
JOB SUM(SAL)
--------- ----------
SALESMAN 5600
MANAGER 8275
ANALYST 6000
-- mostrar el maximo salario del grupo usando rownum
SQL> select rownum, t.* from
2 (
3 select e.job, sum(e.sal)
4 from emp e
5 group by e.job
6 having sum(e.sal) > 5000
7 order by 2 desc
8 )t
9 where rownum=1;
ROWNUM JOB SUM(E.SAL)
---------- --------- ----------
1 MANAGER 8275
select * from employees
where rownum <=3 order by salary desc
Quiero encontrar los 3 mayores salarios de todos los empleados, pero no me da...
Gracias de antemano, si me podrian ayudar mi correo es yerson0102@hotmail.com, plz es en oracle.
Publicar un comentario