PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment dois-je gérer les données classées x sur y dans PostgreSQL ?

Si vous voulez le classement, faites quelque chose comme

SELECT id,num,rank FROM (
  SELECT id,num,rank() OVER (ORDER BY num) FROM foo
) AS bar WHERE id=4

Ou si vous voulez réellement le numéro de ligne, utilisez

SELECT id,num,row_number FROM (
  SELECT id,num,row_number() OVER (ORDER BY num) FROM foo
) AS bar WHERE id=4

Ils diffèrent lorsque vous avez des valeurs égales quelque part. Il y a aussi dense_rank() si vous en avez besoin.

Cela nécessite PostgreSQL 8.4, bien sûr.