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