sql >> Databáze >  >> RDS >> PostgreSQL

Více vzorců na 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

Pro více tabulek můžete použít něco jako:

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

Stačí upravit názvy tabulek na vaše skutečné názvy a zopakovat union all tolikrát, kolikrát potřebujete.



  1. Neexistuje žádná další sada výsledků. Zavolejte prosím mysqli_more_results()/mysqli::more_results() a zkontrolujte, zda se má volat tato funkce/metoda

  2. Co je lepší v MYSQL count(*) nebo count(1)?

  3. Eliminace MySQL Split-Brain v multi-cloudových databázích

  4. Postgresl select count(*) je časově náročný