Select JSONB 列 POSTGRES 上的 DISTINCT

Select DISTINCT on JSONB column POSTGRES

我正在尝试 运行 在存储 JSON 有效负载的 JSONB 列上执行 select 不同计数查询查询,并且遇到了无穷无尽的麻烦没错。

我已经设法从下面的有效负载中检索了数组 EmployeeData 的计数,但其中有一个摘要对象和一个名为 FileNumber 的元素。 JSONB 存储在名为 event

的列中
"EmployeeData": [
 {
  "Summary": {
   "FileNumber": "123456789",
   "FamilyName": "test",
   "FirstName": "test",
   "OtherName": "",
   "Pay": 7942.41,
   "Amount": 26311.00,
   "Other": 3000.00
  },
]

我可以运行这个查询成功

select DISTINCT event -> 'EmployeeData' as Data from mobile.payrun

但是如果我尝试 select DISTINCT event -> 'EmployeeData' --> 'FileNumber' as Data from event_table 没用

有人可以让我知道应该使用什么查询来获取 FileNumber 元素上的 DISTINCT 计数

提前感谢您的帮助。

由于 EmployeeData 是一个数组,您需要处理该数组中可能存在的许多元素。为了得到它们(跨所有行),你需要取消嵌套数组:

select distinct d.element ->> 'FileNumber'
from event_table t
  cross join jsonb_array_elements(t.even -> 'EmployeeData') as d(element);

如果您需要计数,请使用 count(distinct d.element ->> 'FileNumber')