Можно ли написать SQL запрос с выражением в WHERE и в SELECT, но без повторения этого выражения и без вложенного SELECT?

Да, возможно написать SQL запрос с выражением в WHERE и в SELECT без повторения этого выражения и без использования вложенного SELECT. В SQL есть такая концепция как "псевдонимы столбцов" (column aliases) и "псевдонимы таблиц" (table aliases), которые позволяют использовать алиасы для имен столбцов и таблиц внутри запроса.

Для использования выражения из SELECT в WHERE без повторения выражения, можно задать алиас столбца в выражении SELECT, а затем использовать этот алиас в выражении WHERE. Например:

SELECT column1, column2, column1 + column2 AS sum_of_columns
FROM table_name
WHERE sum_of_columns > 10;

В этом запросе мы задаем алиас sum_of_columns для выражения column1 + column2 и затем используем его в выражении WHERE для фильтрации строк, где сумма значений в столбцах column1 и column2 больше 10.

Аналогично, для использования выражения в SELECT в WHERE без повторения можно использовать алиас таблицы, чтобы указать на источник данных. Например:

SELECT t1.column1, t1.column2
FROM table1 AS t1
JOIN table2 AS t2 ON t1.column3 = t2.column3
WHERE t1.column1 > 10;

В этом запросе мы задаем алиас t1 для таблицы table1 и затем используем этот алиас в выражении WHERE для фильтрации строк, где значение в столбце column1 таблицы table1 больше 10.

Таким образом, использование алиасов столбцов и таблиц в SQL позволяет написать запрос с выражением и в WHERE, и в SELECT, без повторения этого выражения и без использования вложенного SELECT.