Jeśli nie chcesz powtarzać wyrażenia, możesz użyć tabeli pochodnej:
select *
from (
select id, cos(id) + cos(id) as op
from myTable
) as t
WHERE op > 1;
Nie będzie to miało żadnego wpływu na wydajność, jest to jedynie cukier składniowy wymagany przez standard SQL.
Alternatywnie możesz przepisać powyższe do wspólnego wyrażenia tabelowego:
with t as (
select id, cos(id) + cos(id) as op
from myTable
)
select *
from t
where op > 1;
To, który preferujesz, jest w dużej mierze kwestią gustu. CTE są optymalizowane w taki sam sposób, jak tabele pochodne, więc pierwsza z nich może być szybsza, szczególnie jeśli istnieje indeks na wyrażeniu cos(id) + cos(id)