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

Bagaimana menerapkan jumlah Oracle (berbeda) di atas partisi di Postgres

Postgres tidak mendukung count(distinct) secara langsung. Tetapi Anda dapat mengimplementasikannya dengan subquery:

select . . .,
       sum( (seqnum_tm = 1)::int) as mob_segments_count ,
       sum( (seqnum_tr = 1)::int) as countries_count
from (select . . .,
             row_number() over (partition by pm.trans_id, pm.country_reg_region_cd order by pm.country_reg_region_cd) as seqnum_tr,
             row_number() over (partition by pm.trans_id, pm.mobseg_state order by pm.pm.mobseg_state) as seqnum_tm
      . . .
     ) . . .

Idenya sederhana. Hitung row_number() pada partition by kunci dan kolom yang berbeda. Kemudian, cukup tambahkan berapa kali nilainya "1". Ini memerlukan subkueri, karena Anda tidak dapat membuat sarang fungsi jendela.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Permintaan Rails SQL dengan % Wildcards berfungsi di SQLite tetapi tidak PostgreSQL?

  2. Instalasi PostgreSQL 9 di Windows:Tidak dapat menulis di dalam jalur lingkungan TEMP.

  3. Dapatkan jalur dari database poin di sql

  4. Buat kolom tipe presisi ganda[] dengan liquibase

  5. Postgres - Ubah daftar adjacency menjadi objek JSON bersarang