最近在统计数据的时候,需要统计各个数据逐日的下载、查看信息。而这个统计需要逐数据进行统计,今次需要将不同的数据作为一栏进行统计,若只有少数几个数据,则将所有的sql信息union就可以,但若不限数量,比如200+,则这个任务就很难通过常规方法实现。或者也可以通过二次编程实现文本的处理。
通过搜索,发现postgresql有个插件,tablefunc,做的就是这个事情。
1. 首先安装
create extension tablefunc;
2. 然后通过sql调用
select * from crosstab(”,”) as ct(…);
其中,第一个参数代表所需要提取的所有数据,第二个参数代表需要的分类信息,比如所有的数据区分,uuid。第三个参数代表是重新分配后的字段名,需要手工写,若是数据量多的话,这个地方也需要一定的工作量(可以考虑正则替换来批处理生成)。
第一次使用的时候,没有添加第二个参数,也能出来结果,但结果最终发现是有问题的。
reference
1. http://www.postgresql.org/docs/current/static/tablefunc.html
发表回复