我在PostgreSQL中有很多数据。但我需要做一些数据透视表,就像SPSS一样。例如,我有城市和州的表。在sql中像在spss中一样创建数据透视表
create table cities
(
city integer,
state integer
);
insert into cities(city,state) values (1,1);
insert into cities(city,state) values (2,2);
insert into cities(city,state) values (3,1);
insert into cities(city,state) values (4,1);
其实在这个表中我有4个城市和2个州。 我想做的数据透视表有个像
city\state |state-1| state-2|
city1 |33% |0% |
city2 |0% |100% |
city3 |33% |0% |
city4 |33% |0% |
totalCount |3 |1 |
我understant如何在SQL这种情况下,格外做到了这一点。但我想要的是通过另一个交叉变量(只计数不同的值,并通过“count(*)where variable_in_column_names = 1等等)使用一些存储的函数进行区分。我正在寻找plpython。我的一些问题是:
- 如何使用没有与 形状适合输出列的数量和类型的临时表输出的记录集。
- 也许有可行的解决方案?
我所看到的,输入会是表名,第一个变量的列名,第二个变量的列名。在函数体中做很多查询计数(*),通过变量中的每个不同值进行循环并对其进行计数等),然后返回带有百分比的表格。
- 事实上,我有很多行的一个查询(约10K)和 可能会做这样的事情在原蟒蛇,不plpython最好的方法是什么?
检查出来的'crosstab'功能'tablefunc'模块:http://www.postgresql.org/docs/current/static/tablefunc.html –
伊夫看着交叉表之前,但它不是一个完整的解决方案,它只是简化了输入。由于我无法在交叉表中添加总计并向变量添加标签。所以我认为函数会像交叉表一样返回表格,但我也必须做很多计算(总计,百分比等)。 – norecces