我在 PostgreSQL 中有很多数据。但我需要像 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 |
我了解如何在这种特殊情况下使用 sql 来做到这一点。但我想要的只是使用一些存储函数将一个变量与另一个变量交叉(只需计算不同的值并通过“count(*)其中variable_in_column_names = 1等等)来划分它。我现在在看plpython。我的一些问题是:
- 如何在没有形状适合输出列的数量和类型的临时表的情况下输出记录集。
- 也许有可行的解决方案?
如我所见,输入将是表名、第一个变量的列名、第二个变量的列名。在函数体中进行大量查询(count(*),遍历变量中的每个不同值并对其进行计数等等),然后返回一个带有百分比的表。
- 实际上我在一个查询中没有很多行(大约 10k),并且可能是在原始 python 中做这些事情的最好方法,而不是 plpython?