postgres json 列的总和元素

Cát*_*tos 7 postgresql json

我试图对过去 24 小时的 json 列中特定类型的所有元素求和,但无法弄清楚我的查询。

所以我有一个名为 data 的 json 列,我希望“live”键具有过去 24 小时内所有“live”的总和,为此我试图做这样的事情

select sum(data->>'live'::json) 
from probing 
where device_id='f051b333-8f1f-4e65-9acc-e76470a87f47' 
  and timestamp > current_timestamp - interval '1 day' 
order by timestamp desc;
Run Code Online (Sandbox Code Playgroud)

我知道这行不通,而且我无法找到可行的解决方案。我看到了一些解决方案,包括使用“json_array_elemens”或“json_each”,但无法完成这项工作。

Cát*_*tos 11

我带来了这个解决方案:

select 
    sum(cast(data->>'live' as integer)) 
from 
    probing 
where 
    device_id='f051b333-8f1f-4e65-9acc-e76470a87f47' 
    and timestamp > current_timestamp - interval '1 day';
Run Code Online (Sandbox Code Playgroud)


小智 6

您可以通过两种方式查询:

select sum((data->>'live')::int) 
from probing 
where device_id='f051b333-8f1f-4e65-9acc-e76470a87f47' 
and timestamp > current_timestamp - interval '1 day' 
order by timestamp desc;
Run Code Online (Sandbox Code Playgroud)
select sum(cast(data->>'live' as int)) 
from probing 
where device_id='f051b333-8f1f-4e65-9acc-e76470a87f47' 
and timestamp > current_timestamp - interval '1 day' 
order by timestamp desc ;
Run Code Online (Sandbox Code Playgroud)