SELECT title, retail, (SELECT AVG(retail) FROM books) FROM books WHERE retail < (SELECT AVG(retail) FROM books)
Есть ли способ сократить один из (ВЫБЕРИТЕ AVG (розничная торговля) ИЗ книги) на псевдоним?
Попробуйте это:
SELECT * FROM ( SELECT title, retail, AVG(retail) OVER() avg_retail FROM books ) WHERE retail < avg_retail
или используя WITH:
WITH dat AS ( SELECT title, retail, AVG(retail) OVER() avg_retail FROM books ) SELECT * FROM dat WHERE retail < avg_retail
вы можете выполнить рефакторинг с предложением WITH, может быть так:
WITH
With avg_retail as (SELECT AVG(retail) the_avg FROM books) SELECT title, retail, avg_retail.the_avg from books, avg_retail where books.retail < avg_retail.the_avg;