add batch remove batch split batch comment selection show hidden batches hide batch highlight batch
db<>fiddle
donate feedback about
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
Help with an interesting Postgres question: Why isn't an Index Only Scan used on a partition accessed via the parent table?.
CREATE temp TABLE test_json (
name text,
name_adds text,
additional text,
created_at timestamp
);

INSERT INTO test_json (additional, name, name_adds)
VALUES ('{"default":[{"value_1": 100, "value_2": 0.1},{"value_1": 200, "value_2": 0.2}],"non_default":[{"value_1": 200, "value_2": 0.1}, {"value_1": 400, "value_2": 0.1}]}', 'john', 'john');

INSERT INTO test_json (additional, name, name_adds)
VALUES ('{"default":[{"value_1": 100, "value_2": 0.1},{"value_1": 200, "value_2": 0.2}],"non_default":[{"value_1": 200, "value_2": 0.1}, {"value_1": 400, "value_2": 0.1}]}', 'john', 'doe');

INSERT INTO test_json (additional, name, name_adds)
VALUES ('[{"value_1": 10, "value_2": 11} ,{"value_1": 1, "value_2": 19}]', 'downy', 'downy');

INSERT INTO test_json (additional, name, name_adds)
VALUES ('[{"value_1": 10, "value_2": 11} ,{"value_1": 1, "value_2": 19}]', 'downy', 'dan');

CREATE TABLE
INSERT 0 1
INSERT 0 1
INSERT 0 1
INSERT 0 1
select * from test_json;
-- SELECT * FROM information_schema.tables;
name name_adds additional created_at
john john {"default":[{"value_1": 100, "value_2": 0.1},{"value_1": 200, "value_2": 0.2}],"non_default":[{"value_1": 200, "value_2": 0.1}, {"value_1": 400, "value_2": 0.1}]} null
john doe {"default":[{"value_1": 100, "value_2": 0.1},{"value_1": 200, "value_2": 0.2}],"non_default":[{"value_1": 200, "value_2": 0.1}, {"value_1": 400, "value_2": 0.1}]} null
downy downy [{"value_1": 10, "value_2": 11} ,{"value_1": 1, "value_2": 19}] null
downy dan [{"value_1": 10, "value_2": 11} ,{"value_1": 1, "value_2": 19}] null
SELECT 4
SELECT
name, name_adds,
b.default_fix

FROM "test_json" a
CROSS JOIN
(
SELECT
SUM((v.val->>'value_1')::numeric) as default_fix
FROM "test_json"
cross join lateral json_array_elements(additional::json-> 'default') as v(val)
) b

name name_adds default_fix
john john 600
john doe 600
downy downy 600
downy dan 600
SELECT 4