Я перетворюю стару систему на основі MS-Access в PostgreSQL. В Access поля, складені в SELECTs, можуть використовуватися як частини рівнянь для пізніших полів, таких як:
SELECT
samples.id,
samples.wet_weight / samples.dry_weight - 1 AS percent_water,
100 * percent_water AS percent_water_100
FROM samples;
Коли я це роблю в PostgreSQL, Postgres видає помилку:
ПОМИЛКА: стовпець "відсоток води" не існує.
Ось як я можу обійти його, вибравши підбірку:
SELECT
s1.id,
s1.percent_water,
100 * s1.percent_water AS percent_water_100
FROM (
SELECT
samples.id,
samples.wet_weight / samples.dry_weight - 1 AS percent_water
FROM samples
) s1;
Чи є якийсь ярлик, як у першому кодовому блоці, щоб обійти складне гніздування? Я також міг би просто сказати 100 * (samples.wet_weight / samples.dry_weight - 1) AS percent_water_100
, але це лише невеликий приклад того, що в моєму коді відбувається набагато більша система математики, з десятками більш складних бітів математики, складених один на одного. Я вважаю за краще робити це максимально чисто, не повторюючи себе.