Значение SQL-запроса, деленное на max (значение) - PullRequest
3 голосов
/ 03 сентября 2010

Мне стыдно за себя, потому что я не могу выполнить этот запрос должным образом ... У меня есть такая таблица

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

, что мне нужно сделать, это разделить каждый "индекс" намакс (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 ]

1 голос
/ 03 сентября 2010

Я считаю, что 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
1 голос
/ 03 сентября 2010

Ваше решение выглядит хорошо.Поскольку подзапрос не связан с внешним запросом, СУБД должна оценивать этот подзапрос только один раз.

...