В данном случае можно использовать функции json_agg и json_build_object для создания дважды вложенного JSON. Вот пример запроса, который собирает данные из таблиц houses, documents и files и формирует двойно вложенный JSON:
```sql
SELECT json_agg(json_build_object(
'house', json_build_object(
'house_id', houses.house_id,
'address', houses.address,
'documents', json_agg(json_build_object(
'document_id', documents.document_id,
'document_name', documents.document_name,
'files', json_agg(json_build_object(
'file_id', files.file_id,
'file_name', files.file_name
))
))
)
))
FROM houses
JOIN documents ON documents.house_id = houses.house_id
JOIN files ON files.document_id = documents.document_id
GROUP BY houses.house_id;
```
В этом запросе мы сначала собираем данные из таблиц houses, documents и files, затем группируем их сначала по house_id, затем по document_id, используя функции json_agg и json_build_object для формирования вложенного JSON.
Результатом будет таблица или представление с колонкой, содержащей дважды вложенный JSON.