我正在解决问题,并且可以在这一点上使用一些方向。我想通过分组级别来总结一些变量,这些变量对于要求和的每个变量是不同的(但是相同的值域)。在伪伪代码中,这是我的问题:对于每个empYEAR
变量(大型格式中有20个左右的逐年变量),我想将其与业务所在的县相加。在那一年。
这些数据是一系列代表Dun& amp; amp; amp; amp; Co. Bradstreet公司/ NETS。
有关数据库的更多详细信息,这是一些平面文件,都具有相同的主键。
主键是DUNSNUMBER
,它存在于多个表中。每年都有详细的表格:
所有组织如下(此表显示就业,但其他变量结构相似,带有一年后缀)。
dunsnumber|emp1990 |emp1991|emp1992|... |emp2011|
a | 12 |32 |31 |... | 35 |
b | |2 |3 |... | 5 |
c | 1 |1 | |... | |
d | 40 |86 |104 |... | 350 |
...
我最终希望有一个结构如下的表:
county |emp1990|emp1991|emp1992|...|emp2011|sales1990|sales1991|sales1992|sales2011|...
A
B
C
...
我现在面临的主要挑战是:如果县作为分组变量有时按年份更改并在另一个表中指定,我如何按照上面的示例表中的按年分配就业(或销售)? / p>
在R
中使用长数据格式似乎相当简单,但有数百万条记录,所以我更喜欢在postgres中保留初始处理。
答案 0 :(得分:1)
据我了解你的问题,这听起来相对简单。虽然我通常更喜欢使用标准化数据,但我没有看到事先规范化的事情会在这里给你带来任何具体的信息。
在我看来,你想要一些比较简单的东西:
SELECT sum(emp1990), sum(emp1991), ....
FROM county c
JOIN emp e ON c.dunsnumber = e.dunsnumber
JOIN sales s ON c.dunsnumber = s.dunsnumber
JOIN ....
GROUP BY c.name, c.state;
我没有看到更简单的方法。很可能您可以查询系统目录或信息模式以生成要汇总的列列表。就我所知,剩下的就是一个直接的分组和加入过程。
如果变量按名称更改,根据我的经验,最好的做法是将基于该联合的位置视图放在一起并加入它。这使您可以隐藏主查询的复杂性,只要您不加入基础表就应该表现得非常好。