sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur ska jag hantera rankad x av y-data i PostgreSQL?

Om du vill ha rangen, gör något liknande

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

Eller om du verkligen vill ha radnumret, använd

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

De kommer att skilja sig när du har lika värden någonstans. Det finns också dense_rank() om du behöver det.

Detta kräver naturligtvis PostgreSQL 8.4.



  1. Sortera efter kolumn ASC, men NULL-värden först?

  2. Oracle Live SQL

  3. Undvik detta vanliga fel när du kör lagrad procedur i MS Access

  4. Vanligt tabelluttryck i MySQL