我想基于此表在PostgreSQL模式中创建一个新视图:
+--------------+
| id | date |
+-----|--------+
| A | 2012 |
| A | 2012 |
| A | 2013 |
+--------------+
我想得到这种类型的数据:
+-----+--------------------------+
| id | date |
+-----|--------------------------+
| A | {"2012": 2, "2013": 1} |
+--------------------------------+
我想使用相同的ID表示相同日期出现的时间。可以在postgreSQL中做类似的事情吗?
很抱歉,如果不清楚,但我不是英语。
答案 0 :(得分:2)
您需要采用两步方法进行汇总。首先,您需要根据ID和日期进行汇总:
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;