#sql #json #postgresql
Вопрос:
Я хотел бы, чтобы psql возвращал результат в формате json со следующим примером формата:
{
"2021-10-27" : 324,
"2021-10-26" : 14,
"2021-10-28" : 24,
"2021-10-30" : 4,
}
Мой SQL-это :
SELECT DATE(user.updated_at), COUNT(*)
FROM users AS user
GROUP BY DATE(user.updated_at)
Как я могу вернуть приведенный выше SQL в виде json.
Я использую psql версии 13.
Спасибо.
Ответ №1:
Вы можете использовать JSON_OBJECT_AGG()
функцию после вложения текущего оператора SELECT, например
SELECT JSON_OBJECT_AGG( updated_at, cnt )
FROM (
SELECT DATE(updated_at) AS updated_at, COUNT(*) AS cnt
FROM users
GROUP BY DATE(updated_at)
) AS u
Комментарии:
1. спасибо за ответ и демонстрацию!
2. добро пожаловать @mgi
Ответ №2:
SELECT
json_build_object(
'current_date', json_agg(users.current_date),
'current_date', json_agg(users.current_date)
) FROM users
Примечание: «current_date-это значения даты в таблице пользователей»
Комментарии:
1. Спасибо, но ваш ответ не даст того же результата, что и мой sql. Он будет представлять current_date дважды как json. Результатом должна быть дата и количество(сгруппировано по дате)