PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Cách triển khai số đếm Oracle (riêng biệt) qua phân vùng trong Postgres

Postgres không hỗ trợ count(distinct) trực tiếp. Nhưng bạn có thể triển khai nó bằng một truy vấn con:

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
      . . .
     ) . . .

Ý tưởng là đơn giản. Tính toán row_number() trên phân vùng partition by các phím và cột riêng biệt. Sau đó, chỉ cần cộng số lần khi giá trị là "1". Điều này yêu cầu một truy vấn con, vì bạn không thể lồng các hàm cửa sổ.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Câu hỏi về Ruby Guard - 'Vui lòng cài đặt bộ điều hợp sqlite3' - railstutorial.org

  2. Tôi có nên đặt thư mục Postgres ngay bên cạnh thư mục dự án của mình không? Nếu vậy, làm thế nào?

  3. findById () cung cấp Không tìm thấy Id thuộc tính

  4. làm cách nào để nhóm theo giờ trong postgresql với trường thời gian?

  5. Trình tự mới được chỉ định không hoạt động