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

エラーデータを要約するPostgresSQLクエリ

    構造クエリとテーブル、および以下のクエリがお役に立てば幸いです。

    構造テーブルとクエリ結果を確認できます: dbfiddle

    集計なし:

    with allow_category as (select unnest(array [
        'cpt',
        'drg',
        'modifiers',
        'secondaryDiagnosis',
        'principalDiagnosis',
        'secondaryProcedure',
        'observationhours',
        'dischargeStatus',
        'principalprocedure',
        'hcpcs',
        'professionalEvaluationManagement'
        ]::text[]) category)
    select distinct ctextid,
                    vbillid,
                    initcap(kcy.key)                                                   as typeofcorrection,
                    initcap(regexp_replace(kc.key, '([a-z])([A-Z])', '\1 \2', 'g'))    as errorpara,
                    case when f ? 'from' then f -> 'from' ->> 'code' else '' end       as oldvalue,
                    case when f ? 'to' then f -> 'to' ->> 'code' else f ->> 'code' end as newvalue
    from qareport q
             cross join jsonb_each(q.codemap) as kc
             cross join jsonb_each(kc.value) as kcy
             join jsonb_array_elements(kcy.value) f on true
    where kc.key in (select * from allow_category)
      and kcy.key in ('added', 'revised', 'removed')
      and (
            jsonb_array_length(kc.value -> 'added') > 0
            or jsonb_array_length(kc.value -> 'revised') > 0
            or jsonb_array_length(kc.value -> 'removed') > 0
        );
    

    集計あり:

    with allow_category as (select unnest(array [
        'cpt',
        'drg',
        'modifiers',
        'secondaryDiagnosis',
        'principalDiagnosis',
        'secondaryProcedure',
        'observationhours',
        'dischargeStatus',
        'principalprocedure',
        'hcpcs',
        'professionalEvaluationManagement'
        ]::text[]) category)
    select distinct ctextid,
                    vbillid,
                    initcap(kcy.key)                                                   as typeofcorrection,
                    initcap(regexp_replace(kc.key, '([a-z])([A-Z])', '\1 \2', 'g'))    as errorpara,
                    case when f ? 'from' then f -> 'from' ->> 'code' else '' end       as oldvalue,
                    case
                        when f ? 'to' then f -> 'to' ->> 'code'
                        else string_agg(f ->> 'code', ',')
                             over (partition by ctextid, vbillid, kcy.key, kc.key) end as newvalue
    from qareport q
             cross join jsonb_each(q.codemap) as kc
             cross join jsonb_each(kc.value) as kcy
             join jsonb_array_elements(kcy.value) f on true
    where kc.key in (select * from allow_category)
      and kcy.key in ('added', 'revised', 'removed')
      and (
            jsonb_array_length(kc.value -> 'added') > 0
            or jsonb_array_length(kc.value -> 'revised') > 0
            or jsonb_array_length(kc.value -> 'removed') > 0
        );
    



    1. サーバーは1秒間にいくつのMySqlクエリを処理できますか?

    2. COUNT、MAX、SUMを組み合わせたMySQL

    3. 統計がロックされているテーブルを見つける方法

    4. Postgres:.sqlファイルの\copy構文エラー