sql >> Databáze >  >> RDS >> PostgreSQL

Počet klíčů Postgres json

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;

Vrátí:

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

Vracet to, jak jste ukázali, mi nepřipadá jako skvělý nápad (co byste chtěli dělat, když existují 4 miliardy různých hodnot?), ale vždy můžete ve své aplikaci otočit nebo upravit dotaz, aby se pivotování provedlo.




  1. Pořadí dotazů MySQL podle více položek

  2. Vyberte všechny hodnoty možností php mysql

  3. Prováděcí plány Oracle při použití operátoru LIKE s funkcí DETERMINISTIC

  4. MySQL nejlepší způsob, jak ukládat dlouhé řetězce