PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Postgres come implementare la colonna calcolata con clausola

Se non vuoi ripetere l'espressione, puoi utilizzare una tabella derivata:

select *
from (
   select id, cos(id) + cos(id) as op 
   from myTable 
) as t 
WHERE op > 1;

Questo non avrà alcun impatto sulle prestazioni, è semplicemente zucchero sintattico richiesto dallo standard SQL.

In alternativa puoi riscrivere quanto sopra in un'espressione di tabella comune:

with t as (
  select id, cos(id) + cos(id) as op 
  from myTable 
)
select *
from t 
where op > 1;

Quale preferisci è in gran parte una questione di gusti. I CTE sono ottimizzati allo stesso modo delle tabelle derivate, quindi il primo potrebbe essere più veloce soprattutto se è presente un indice sull'espressione cos(id) + cos(id)