PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да внедрим Oracle count(distinct) над дял в Postgres

Postgres не поддържа count(distinct) директно. Но можете да го приложите с подзаявка:

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

Идеята е проста. Изчислете row_number() на partition by клавиши и отделната колона. След това просто добавете броя пъти, когато стойността е "1". Това изисква подзаявка, защото не можете да влагате прозоречни функции.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Инсталирането на pip е неуспешно с /usr/bin/clang:Няма такъв файл или директория

  2. Как се пише DELETE CASCADE за postgres?

  3. Как да изброя записи с дата от последните 10 дни?

  4. Oracle към PostgreSQL:Причини за мигриране

  5. Неочаквани SQL заявки към база данни на Postgres на Rails/Heroku