sql >> データベース >  >> RDS >> PostgreSQL

Postgresでパーティション上にOraclecount(distinct)を実装する方法

    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. groupby句を使用したSQL更新クエリ

    2. Hibernateを使用して階層結果を取得するためのデータベースクエリの再帰-Java

    3. mysqlは特定の文字をチョークし、mssqlはチョークしません

    4. SqlCommandを使用して複数の結果セットを返すにはどうすればよいですか?