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" होने पर बस कई बार जोड़ें। इसके लिए एक सबक्वायरी की आवश्यकता होती है, क्योंकि आप विंडो फ़ंक्शंस को नेस्ट नहीं कर सकते हैं।