我在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