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

Postgresjsonキーカウント

    CREATE TABLE test (id INT4 PRIMARY KEY, some_name TEXT, j json);
    copy test FROM stdin;
    01  TEST1   {"key1" : "value1", "key2": "value2", "key4": "value4"}
    02  TEST1   {"key1" : "value1"}
    03  TEST2   {"key1" : "value1", "key2": "value2", "key3":"value3"}
    \.
    with unpacked as (
        SELECT (json_each_text(j)).* FROM test
    )
    SELECT value, count(*) FROM unpacked WHERE key in ('key1', 'key2', 'key3') group by value;
    

    返品:

     value  | count 
    --------+-------
     value1 |     3
     value3 |     1
     value2 |     2
    (3 rows)
    

    あなたが示したようにそれを返すことは私には素晴らしい考えではありませんが(40億の異なる値がある場合はどうしますか?)、いつでもアプリでピボットするか、ピボットを行うようにクエリを変更できます。




    1. SQLカーソルの操作

    2. PHPを使用して接続するSQLServerアドレス

    3. 関数の取得DDLコマンド

    4. SQL-複数の列に基づいて、あるテーブルから別のテーブルにレコードを照合します