एक मायने में, क्वेरी की संरचना परिणाम के समान है:
select json_agg(children)
from (
select
json_build_object(
'id', lvl1,
'children', json_agg(children order by lvl1)) as children
from (
select
lvl1,
json_build_object(
'id', lvl2,
'children', json_agg(items order by lvl2)) as children
from (
select
lvl1,
lvl2,
json_build_object(
'id', lvl3,
'items', json_agg(item order by lvl3)) as items
from my_table
group by lvl1, lvl2, lvl3
) s
group by lvl1, lvl2
) s
group by lvl1
) s;
ध्यान दें, कि order by
समुच्चय में आवश्यक नहीं हैं क्योंकि एक json सरणी का क्रम अपरिभाषित है। मैंने उन्हें बिल्कुल अपेक्षित परिणाम प्राप्त करने के लिए जोड़ा है।