Прежде всего, кажется, у вас есть столбец типа jsonb fruits
в таблице как
{ "records": [
{ "VersionNumber": 1, "Label": "Apple" },
{ "VersionNumber": 2, "Label": "Apple" },
{ "VersionNumber": 3, "Label": "Apple" },
{ "VersionNumber": 1, "Label": "Orange" }
] }
Тогда вы на полпути. Необходима только функция windows analyti c (например, RANK()
), поскольку она разделена по столбцу Labels
, а в порядке убывания по столбцу VersionNumber
-
SELECT VersionNumber, Label
FROM
(
SELECT elem -> 'VersionNumber' as VersionNumber, elem->> 'Label' as Label,
RANK() OVER (PARTITION BY elem-> 'Label'
ORDER BY elem-> 'Label', elem -> 'VersionNumber' DESC) AS rnk
FROM transaction
JOIN LATERAL jsonb_array_elements(fruits -> 'records') elem
ON TRUE
) q
WHERE q.rnk = 1
Demo