Ускорить запрос с 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.


Ответы (0 шт):