Модульні уроки (2/2)
Функції агрегації JSON
Функції агрегації JSON
Інтеграція двонаправлена. База даних не повинна обмежуватися аналізом JSON: вона може створити її. Уявіть, якби вашому API і Node.js не доводилося виконувати брудну, інтенсивну роботу з серіалізації вкладених об’єктів у JSON, оскільки БД доставляла їх уже зібраними прямо з диска.
Побудова об'єктів і масивів
Замість класичної масової агрегації або конкатенації рядків (String_agg) ми звернемося до цих функцій:
json_build_object(key, value, ...)абоjsonb_build_object(...)json_agg(...)абоjsonb_agg(...)
SELECT json_build_object('name', first_name, 'city', city) AS data
FROM customers;Ви побачите надруковані рядки, які містять { "name": "...", "city": "..." }, що повністю відповідає вимогам.
З таблиці «клієнти» поверніть дані як рядки JSON, зіставлені за допомогою \`json_build_object\`. Зіставте два ключі: «ім’я», пов’язане з «ім’ям», і «пошта», пов’язане з «електронною поштою». Використовуйте \`AS customer_doc\` для стовпця.
Показати підказку
json_build_object('name', first_name, 'mail', email)
Рішення доступне після 3 спроб
Для кожного замовлення (\`order_id\`) створіть в одному блоку всі \`product_id\`, які він містить. З таблиці 'order_items' запустіть \`GROUP BY order_id\`. Потім виберіть \`order_id\` і накопичуйте в масиві JSON (JSON_AGG) лише дані \`product_id\`. Назвіть масив \`продукти\`.
Показати підказку
JSON_AGG(product_id) плюс класичне групування за для збору даних.
Рішення доступне після 3 спроб