PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Peringkat berdasarkan urutan tanggal

SELECT heading, thedate
      ,row_number() OVER (PARTITION BY grp ORDER BY thedate) AS rn
FROM  (
   SELECT *, thedate - (row_number() OVER (ORDER BY thedate))::int AS grp
   FROM   demo
   ) sub;

Saat Anda berbicara tentang "peringkat", Anda sepertinya menginginkan hasil dari fungsi jendela row_number() .

  1. Bentuk grup hari berturut-turut (tanggal yang sama di grp ) di subkueri sub .
  2. Beri nomor baris dengan row_number() lainnya panggilan, kali ini dipartisi oleh grp .

Satu subquery adalah minimal di sini, karena fungsi jendela tidak dapat disarangkan.

SQL Fiddle.

Perhatikan bahwa saya menggunakan versi kedua dari data sampel Anda yang kontradiktif. Dan hasilnya seperti @mu disarankan dalam komentarnya.
Juga dengan asumsi bahwa tidak ada tanggal duplikat. Anda harus menggabungkan terlebih dahulu dalam kasus ini.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara menyisipkan file .png atau .jpeg secara manual ke dalam kolom byte di PostgreSQL?

  2. Buat tabel dalam gambar buruh pelabuhan PostgreSQL

  3. Penyelaman Cloud Vendor:PostgreSQL di Microsoft Azure

  4. Cara Keluar dari Utilitas Baris Perintah PostgreSQL (psql)

  5. Optimalkan penghapusan Postgres dari catatan yatim