PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Postgres comment implémenter une colonne calculée avec une clause

Si vous ne souhaitez pas répéter l'expression, vous pouvez utiliser une table dérivée :

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

Cela n'aura aucun impact sur les performances, c'est simplement du sucre syntaxique requis par la norme SQL.

Vous pouvez également réécrire ce qui précède dans une expression de table commune :

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

Celui que vous préférez est en grande partie une question de goût. Les CTE sont optimisés de la même manière que les tables dérivées, donc le premier peut être plus rapide, surtout s'il y a un index sur l'expression cos(id) + cos(id)