Использую СУБД PostgreSQL.
Просьба помочь написать сложный запрос,
есть таблица Users
User UserDate
Петя 2024-01-01
Петя 2024-01-01
Петя 2026-01-01
Ваня 2025-01-02
Ваня 2025-01-02
Игорь 2025-06-10
В итоге нужен json вида
{
Петя: {
'2024-01-01': 2,
'2026-01-01': 1
}.
Ввня: {
'2025-01-02': 2
}
Игорь: {
'2025-06-10': 1
}
}
Моих знаний хватило только на такой запрос:
WITH tmp AS(
SELECT
COUNT(*) AS "kolvo",
"UserData"
"User"
FROM "Users"
GROUP BY "User", "UserData"
),
tmp1 AS(
SELECT
"User",
array_agg(
json_build_object(
"UserDate"::text, "Kol"
)
) AS "user_json"
GROUP BY "User"
)
SELECT
array_agg(
json_build_object(
"User", "user_json"
)
)
FROM tmp1
Тут в итоге получается массив json, внутри тоже массив из json.
Нужно просто json значения которого тоже json