Создать JSON для тех же значений в поле зрения - PullRequest
0 голосов
/ 29 октября 2018

Я хотел бы создать новое представление в моей схеме PostgreSQL на основе этой таблицы:

+--------------+
| id  |  date  |
+-----|--------+
|  A  |  2012  |
|  A  |  2012  |
|  A  |  2013  |
+--------------+

И я хотел бы получить на мой взгляд этот тип данных:

+-----+--------------------------+
| id  |           date           |
+-----|--------------------------+
|  A  |  {"2012": 2, "2013": 1}  |
+--------------------------------+

Я хотел бы получить для того же идентификатора количество раз, когда появляется одна и та же дата. Можно ли сделать что-то подобное в postgreSQL?

Извините, если неясно, но я не англичанин.

1 Ответ

0 голосов
/ 29 октября 2018

Вам нужен двухэтапный подход для агрегации. Сначала вам нужно агрегировать на основе идентификатора и даты:

select id, "date", count(*) cnt
from x
group by id, "date";

Этот результат затем можно использовать для агрегации JSON:

select id, jsonb_object_agg("date", cnt)
from (
  select id, "date", count(*) cnt
  from x
  group by id, "date"
) t
group by id;

Онлайн пример: https://rextester.com/GIC93266

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...