【发布时间】:2014-08-08 00:07:55
【问题描述】:
我在 POSTGRESQL 中有一个表,它实际上是由一堆 JOINS 生成的 VIEW,最终看起来像这样:
test_type | brand | model | band | firmware_version | avg_throughput
-----------+---------+--------+------+------------------+----------------
1client | Linksys | N600 | 5ghz | 1.5 | 66.94
1client | Linksys | N600 | 5ghz | 2.0 | 94.98
1client | Linksys | N600 | 5ghz | 2.11 | 132.40
1client | Linksys | EA6500 | 5ghz | 1.5 | 216.46
1client | Linksys | EA6500 | 5ghz | 2.0 | 176.79
1client | Linksys | EA6500 | 5ghz | 2.11 | 191.44
我想要完成的是创建另一个列,该列将比较并显示每个模型的不同firmware versions 之间的throughput 百分比差异。
更具体地说,查询将获取最低固件版本的吞吐量并将其保存为与所有其他固件版本的吞吐量进行比较的基础。
因此,如果我们采用Linksys N600,最低固件版本为1.5,吞吐量为66.94,我们会将其保存为基线,并将其他吞吐量与该数字进行比较,并显示百分比差异。
表格的最终结果如下所示:
test_type | brand | model | band | firmware_version | avg_throughput | comparison
-----------+---------+--------+------+------------------+----------------+------------
1client | Linksys | N600 | 5ghz | 1.5 | 66.94 | 0% (or empty)
1client | Linksys | N600 | 5ghz | 2.0 | 94.98 | +41.61%
1client | Linksys | N600 | 5ghz | 2.11 | 132.40 | +97.78%
1client | Linksys | EA6500 | 5ghz | 0.5 | 216.46 | 0% (or empty)
1client | Linksys | EA6500 | 5ghz | 1.2 | 176.79 | -18.32%
1client | Linksys | EA6500 | 5ghz | 2.5 | 191.44 | -11.55%
关于如何做到这一点的任何想法?
我喜欢保持逻辑和分离,现在我不考虑在我的代码中进行此计算,我宁愿在我的数据库上完成此操作,然后只显示结果,但如果不这样做,我愿意接受建议有道理。
【问题讨论】:
标签: postgresql