PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Fórmula múltipla no PostgreSQL


SQLFiddle
select
  2.5*((r-i)/(r+(6*i)-(7.5*n)+1)) as tera,
  (r-(2*i)-n)/(r+(2*i)-n) as tera2
from
  (
  select
    sum(case when wavelength between 340 and 345 then reflectance end) as r,
    sum(case when wavelength between 350 and 355 then reflectance end) as i,
    sum(case when wavelength between 360 and 365 then reflectance end) as n
  from
    test
  ) vars

Para várias tabelas, você pode usar algo como:
select
  table_name,
  2.5*((r-i)/(r+(6*i)-(7.5*n)+1)) as tera,
  (r-(2*i)-n)/(r+(2*i)-n) as tera2
from
  (
  select
    table_name,
    sum(case when wavelength between 340 and 345 then reflectance end) as r,
    sum(case when wavelength between 350 and 355 then reflectance end) as i,
    sum(case when wavelength between 360 and 365 then reflectance end) as n
  from
    (
      select 'table 1' as table_name, * from test
      union all
      select 'table 2', * from test
      union all
      select 'table 3', * from test      
      union all
      select 'table 4', * from test  
    ) as all_tables
  group by
    table_name
  ) vars

SQLFiddle

Você só precisa modificar os nomes das tabelas para seus nomes reais e repetir union all quantas vezes precisar.