{"total"=>"38.7",
"order_products"=>
[{"id"=>"200139", "order_id"=>"52918", "product_id"=>"651738", "price"=>"19.35", "quantity"=>"2", "tax"=>"1.98"}],
"address"=>
{"address"=>"bla bla", "address_2"=>"", "city"=>"Chicago", "state"=>"IL", "zip"=>"", "phone"=>""},
...
Видно, что ключ order_products это массив из json
Нужно для скоупа записей просуммировать price для всех их order_products
Пробую так
SELECT sum((value->>'price')::float) as total_price
FROM my_table
CROSS JOIN LATERAL jsonb_array_elements((my_table.payload->>'order_products')::jsonb)
GROUP orders.id
Правда потом надо будет просуммировать все что бы общую сумму получить, но это другая тема. Такой запрос мне выдает 0.0 при любых данных. Будто обращаюсь к несуществующему ключу jsonb. Как это правильно сделать?
может надо начать с того,чтобы версию пг писать?
Обсуждают сегодня