我为自己感到羞耻'因为我无法正确地进行此查询...我有一张这样的表
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子句......
还有另一种(更好吗?)方法吗?或者我应该看另一种方式
提前谢谢
答案 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