Postgres unterstützt count(distinct)
nicht direkt. Aber Sie können es mit einer Unterabfrage implementieren:
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
. . .
) . . .
Die Idee ist einfach. Berechnen Sie row_number()
auf der partition by
Schlüssel und die eindeutige Spalte. Dann addieren Sie einfach die Anzahl der Male, wenn der Wert "1" ist. Dies erfordert eine Unterabfrage, da Sie Fensterfunktionen nicht verschachteln können.