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

PostgreSQL - nhóm theo cột jsonb

Một kiểu tổng hợp hơi phức tạp:

with my_table (id, score_labels) as (
values
(1, '{"total": "High", "risk": "High"}'::jsonb),
(2, '{"total": "High", "risk": "Low"}'::jsonb),
(3, '{"total": "Low", "risk": "Medium"}'::jsonb)
)

select 
    jsonb_build_object(
        'high', count(*) filter (where total = 'High'),
        'medium', count(*) filter (where total = 'Medium'),
        'low', count(*) filter (where total = 'Low')
    ) as total,
    jsonb_build_object(
        'high', count(*) filter (where risk = 'High'),
        'medium', count(*) filter (where risk = 'Medium'),
        'low', count(*) filter (where risk = 'Low')
    ) as risk
from (
    select 
        score_labels->>'total' as total, 
        score_labels->>'risk' as risk
    from my_table
    ) s

               total                |                risk                
------------------------------------+------------------------------------
 {"low": 1, "high": 2, "medium": 0} | {"low": 1, "high": 1, "medium": 1}
(1 row) 



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. câu lệnh sql có đảm bảo tính nguyên tử trong postgres không

  2. Kiểm tra động dữ liệu với trình kích hoạt PostgreSQL

  3. Cập nhật câu lệnh bằng cách sử dụng mệnh đề WHERE chứa các cột có Giá trị rỗng

  4. Nhiều giá trị mặc định được chỉ định cho id cột của bảng

  5. Làm cách nào để xóa một trong hai dòng dữ liệu trùng lặp của tôi trong Postgres?