Bjo*_*sen 3 sql postgresql pivot crosstab
我有实验,功能和feature_values。要素在不同的实验中具有价值。所以我有这样的事情:
Experiments:
experiment_id, experiment_name
Features:
feature_id, feature_name
Feature_values:
experiment_id, feature_id, value
Run Code Online (Sandbox Code Playgroud)
可以说,我有三个实验(exp1,exp2,exp3)和三个功能(feat1,feat2,feat3)。我想要一个看起来像SQL的结果:
feature_name | exp1 | exp2 | exp3
-------------+------+------+-----
feat1 | 100 | 150 | 110
feat2 | 200 | 250 | 210
feat3 | 300 | 350 | 310
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?此外,在一项实验中,一项功能可能没有价值。
feature_name | exp1 | exp2 | exp3
-------------+------+------+-----
feat1 | 100 | 150 | 110
feat2 | 200 | | 210
feat3 | | 350 | 310
Run Code Online (Sandbox Code Playgroud)
SQL查询应具有良好的性能。将来,feature_values表中可能有数千万个条目。还是有更好的方法来处理数据?
这是一个常见的要求。这称为枢轴查询或交叉表查询。PostgreSQL没有很好的内置语法,但是您可以使用模块中的crosstab函数tablefunc来执行所需的操作。
有关更多信息,请搜索[postgresql] [pivot]或的堆栈溢出[postgresql] [crosstab]。
一些关系数据库系统提供了一种使用内置查询执行此操作的好方法,但PostgreSQL尚未提供。
| 归档时间: |
|
| 查看次数: |
2771 次 |
| 最近记录: |