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

PostgreSQL-jsonb列によるグループ化

    やや複雑な種類の集計:

    with my_table (id, score_labels) as (
    values
    (1, '{"total": "High", "risk": "High"}'::jsonb),
    (2, '{"total": "High", "risk": "Low"}'::jsonb),
    (3, '{"total": "Low", "risk": "Medium"}'::jsonb)
    )
    
    select 
        jsonb_build_object(
            'high', count(*) filter (where total = 'High'),
            'medium', count(*) filter (where total = 'Medium'),
            'low', count(*) filter (where total = 'Low')
        ) as total,
        jsonb_build_object(
            'high', count(*) filter (where risk = 'High'),
            'medium', count(*) filter (where risk = 'Medium'),
            'low', count(*) filter (where risk = 'Low')
        ) as risk
    from (
        select 
            score_labels->>'total' as total, 
            score_labels->>'risk' as risk
        from my_table
        ) s
    
                   total                |                risk                
    ------------------------------------+------------------------------------
     {"low": 1, "high": 2, "medium": 0} | {"low": 1, "high": 1, "medium": 1}
    (1 row) 
    



    1. Oracle SQL:4倍の結果とデータを生成するSQLクエリが正しく順序付けられない

    2. PostgreSQLに存在しない場合にのみテーブルを作成する方法

    3. データベースの履歴

    4. mysqlデータベースに画像を挿入する際のmysqlエラー