Ускорить запрос с DISTINCT ON и выводом данных в jsonb
Такой запрос работает и на моих данных выводит положенные 7 строк:
SELECT sss.nim, sss.dcr, sss.fkt, sss.iml, sss.imn
FROM (SELECT DISTINCT ON (b.nim)
a.fku,
b.aim,
b.nim,
b.dcr,
b.fkt,
b.sta,
b.iml,
b.imn
FROM a left join b on a.ntp = b.fkt
WHERE b.fkt = 1162
ORDER BY b.nim, b.aim DESC
) as sss
WHERE sss.sta = true
ORDER BY sss.nim DESC
LIMIT 7;
Хочу получить эти данные в jsonb, делаю так:
SELECT jsonb_agg(sss.nim ||','|| sss.dcr ||','|| sss.fkt ||','|| sss.iml ||','|| sss.imn)
FROM (SELECT DISTINCT ON (b.nim)
a.fku,
b.aim,
b.nim,
b.dcr,
b.fkt,
b.sta,
b.iml,
b.imn
FROM a left join b on a.ntp = b.fkt
WHERE b.fkt = 1162
ORDER BY b.nim, b.aim DESC
) as sss
WHERE sss.sta = true
GROUP BY sss.nim
ORDER BY sss.nim DESC
LIMIT 7 into my_jsonb;
Получаю в my_jsonb только первую строку из семи, а как поместить все семь?
Пробую ускорить и переписать данный запрос с DISTINCT ON на WITH RECURSIVE .. SELECT LATERAL, - не получается, help, please.