PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como devo lidar com x classificados de y dados no PostgreSQL?


Se você quer a classificação, faça algo como
SELECT id,num,rank FROM (
  SELECT id,num,rank() OVER (ORDER BY num) FROM foo
) AS bar WHERE id=4

Ou se você realmente quiser o número da linha, use
SELECT id,num,row_number FROM (
  SELECT id,num,row_number() OVER (ORDER BY num) FROM foo
) AS bar WHERE id=4

Eles serão diferentes quando você tiver valores iguais em algum lugar. Há também denso_rank() se você precisar disso.

Isso requer o PostgreSQL 8.4, é claro.