sql >> Base de Datos >  >> RDS >> PostgreSQL

Postgres cómo implementar la columna calculada con cláusula

Si no desea repetir la expresión, puede utilizar una tabla derivada:

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

Esto no tendrá ningún impacto en el rendimiento, es simplemente azúcar sintáctico requerido por el estándar SQL.

Alternativamente, podría reescribir lo anterior en una expresión de tabla común:

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

Cuál prefieres es en gran medida una cuestión de gusto. Los CTE se optimizan de la misma manera que las tablas derivadas, por lo que la primera puede ser más rápida, especialmente si hay un índice en la expresión cos(id) + cos(id)