0
SELECT title, retail, (SELECT AVG(retail)
FROM books)
FROM books
WHERE retail < (SELECT AVG(retail)
FROM books)
有没有办法将(选择AVG(零售) 从书籍中的一个)缩短为别名?如何避免在oracle中重复?
SELECT title, retail, (SELECT AVG(retail)
FROM books)
FROM books
WHERE retail < (SELECT AVG(retail)
FROM books)
有没有办法将(选择AVG(零售) 从书籍中的一个)缩短为别名?如何避免在oracle中重复?
试试这个:
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 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;
我试图找到(http://www.oracle.com/pls/db102/search?word=over&tab_id=15&partno=)的解释,是否有直接链接或者可能是一个解释? – user490735 2011-04-14 21:36:05
选中此项:http://download.oracle.com/docs/cd/B19306_01/server.102/b14223/analysis.htm#i1006928 – Chandu 2011-04-14 21:38:29