Обсуждение: equivalent of oracle rank() in postgres

Поиск
Список
Период
Сортировка

equivalent of oracle rank() in postgres

От
"Chandan_Kumaraiah"
Дата:

 

Hi,

 

Jus wanted the equivalent for rank() as in tis example..

 

SELECT *
FROM (
  SELECT employee_id, last_name, salary,
  RANK() OVER (ORDER BY salary DESC) EMPRANK
  FROM employees)
WHERE emprank = 3;

 

Rgds,

Chandan

Re: equivalent of oracle rank() in postgres

От
"Greg Sabino Mullane"
Дата:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1


> Jus wanted the equivalent for rank() as in tis example..

> SELECT *
> FROM (
>   SELECT employee_id, last_name, salary,
>   RANK() OVER (ORDER BY salary DESC) EMPRANK
>   FROM employees)
> WHERE emprank = 3;

There is no direct equivalent to rank(), but there are certainly
other ways to get the results. The above query can be written in
PostgreSQL as:

SELECT employee_id, last_name, salary
FROM employees
WHERE salary =(SELECT DISTINCT salary FROM employees ORDER BY salary DESC OFFSET 2 LIMIT 1);

- --
Greg Sabino Mullane greg@turnstep.com
PGP Key: 0x14964AC8 200503212152
http://biglumber.com/x/web?pk=2529DF6AB8F79407E94445B4BC9B906714964AC8
-----BEGIN PGP SIGNATURE-----

iD8DBQFCP4hwvJuQZxSWSsgRAoKPAKDE0pB4NueE0Dh9EfJiXw79SvCDoACcC4xb
ydxVgK9DgGHQXJqFIrlHIIo=
=GRIX
-----END PGP SIGNATURE-----