SQL查询值除以max(值)

时间:2010-09-03 09:28:33

标签: sql postgresql max

我为自己感到羞耻'因为我无法正确地进行此查询...我有一张这样的表

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

我需要做的是将每个“indice”除以max(indice)。那就是:

  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子句......

还有另一种(更好吗?)方法吗?或者我应该看另一种方式

提前谢谢

2 个答案:

答案 0 :(得分:1)

你的解决方案看起来很好。由于子查询与外部查询无关,因此DBMS应仅评估该子查询一次。

答案 1 :(得分:1)

我相信Postgresql允许CTE。

Select * into yourtable from blablabla


WITH T2(MaxNumber) as
(
select MAX(indice) as MaxNumber from yourtable
)
update t1
set t1.indice=t1.indice / T2.MaxNumber
from yourtable t1, T2