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

Postgres como implementar coluna calculada com cláusula


Se você não quiser repetir a expressão, você pode usar uma tabela derivada:
select *
from (
   select id, cos(id) + cos(id) as op 
   from myTable 
) as t 
WHERE op > 1;

Isso não terá nenhum impacto no desempenho, é apenas açúcar sintático exigido pelo padrão SQL.

Alternativamente, você pode reescrever o acima para uma expressão de tabela comum:
with t as (
  select id, cos(id) + cos(id) as op 
  from myTable 
)
select *
from t 
where op > 1;

Qual você prefere é em grande parte uma questão de gosto. As CTEs são otimizadas da mesma forma que as tabelas derivadas, então a primeira pode ser mais rápida, especialmente se houver um índice na expressão cos(id) + cos(id)