问题:SQL查询值除以max(value)

我为自己感到羞耻,因为我不能正确地做这个查询......我有一张这样的桌子

  nom  | code_geo | valeur |       indice
-------+----------+--------+--------------------
 AISNE | 02       |  81573 | 0.05
 SOMME | 80       |  79520 | 0.03
 OISE  | 60       |  70004 | 0.09

我需要做的是将每个“指数”除以最大值(指数)。那是:

  nom  | code_geo | valeur |       indice
-------+----------+--------+--------------------
 AISNE | 02       |  81573 | 0.05 / 0.09
 SOMME | 80       |  79520 | 0.03 / 0.09
 OISE  | 60       |  70004 | 0.09 / 0.09

我的第一个猜测是:

SELECT nom,code_geo,valeur,indice/(SELECT max(indice) FROM blablabla) FROM blablabla;

我的问题是“blablabla”实际上是一个带有 6 个参数的函数,我不想在子查询上重复 FROM 子句......

还有另一种(更好的?)方法吗?还是我应该换个方式

提前谢谢

解答

你的解决方案看起来不错。由于子查询与外部查询不相关,DBMS 应该只评估该子查询一次。

Logo

PostgreSQL社区为您提供最前沿的新闻资讯和知识内容

更多推荐