miércoles, 22 de abril de 2009

Funcion Top o Limit en Oracle

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

4 comentarios:

Luciano Desarrollo dijo...

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

adrian dijo...

-- 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

adrian dijo...

-- 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

Ðan†'es dijo...

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.

Mis fotos en TrekEarth