PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Làm cách nào để tính tổng một giá trị trong một mảng JSONB trong Postgresql?

Sử dụng hàm jsonb_array_elements() trong một phép nối bên trong mệnh đề from:

select cname, sum(coalesce(value, '0')::int) as value
from (
    select 
        p06->>'cname' as cname, 
        value->>'progress' as value
    from ryzom_characters
    cross join jsonb_array_elements(p06->'rpjobs')
    where cid = 675010
    ) s
group by cname
order by value desc 
limit 50;

Bạn có thể sử dụng kết nối trái thay vì kết hợp chéo để bảo vệ truy vấn khỏi dữ liệu không nhất quán:

    left join jsonb_array_elements(p06->'rpjobs')
    on jsonb_typeof(p06->'rpjobs') = 'array'
    where p06->'rpjobs' <> 'null'


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Superuser postgres là gì

  2. Triển khai Postgres11 đến Elastic Beanstalk - Yêu cầu / etc / redhat-release

  3. Làm cách nào để tôi có thể truy vấn tất cả dữ liệu của mình trong khoảng cách 5 mét?

  4. Rails 3, Heroku:Taps Server Error:PGError:ERROR:chuỗi byte không hợp lệ để mã hóa UTF8:0xba

  5. làm thế nào để thu thập nhiều giá trị dưới dạng một chuỗi duy nhất trong postgres?