sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvordan skal jeg håndtere rangeret x ud af y-data i PostgreSQL?

Hvis du vil have rangeringen, skal du gøre noget lignende

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

Eller hvis du rent faktisk vil have rækkenummeret, så brug

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

De vil adskille sig, når du har lige værdier et eller andet sted. Der er også dense_rank(), hvis du har brug for det.

Dette kræver selvfølgelig PostgreSQL 8.4.



  1. Sådan eksporteres store mængder data ved hjælp af sql-udvikler - Oracle

  2. Oracle SQL-sætning dynamisk skemavariabel

  3. Oracle-søgetekst med ikke-engelske tegn

  4. Oracle vælg gensidig understreng