Sql 显示最昂贵影片的成本在2美元以内的查询
那些是我的专栏 我正在使用oracle 9i 感谢所有能帮忙的人。所以只要用这些信息来过滤所有的电影就行了Sql 显示最昂贵影片的成本在2美元以内的查询,sql,oracle,max,aggregate-functions,oracle9i,Sql,Oracle,Max,Aggregate Functions,Oracle9i,那些是我的专栏 我正在使用oracle 9i 感谢所有能帮忙的人。所以只要用这些信息来过滤所有的电影就行了 TITLE GEN DURATION PRODUCTION_YEAR MED PURCHASE_PRICE PURCHASE_ MOVIE_ID 此查询将聚合查询放入它在FROM子句中引用的子查询分解子句中。我们使用交叉联接,因为我们知道子查询只返回一行,所以不需要任何联接条件。WHERE子句根据价格进行过滤 您说您正在使用Oracle 9i。为什么会有这么旧的版本?它
TITLE GEN DURATION PRODUCTION_YEAR MED PURCHASE_PRICE PURCHASE_ MOVIE_ID
此查询将聚合查询放入它在FROM子句中引用的子查询分解子句中。我们使用交叉联接,因为我们知道子查询只返回一行,所以不需要任何联接条件。WHERE子句根据价格进行过滤
您说您正在使用Oracle 9i。为什么会有这么旧的版本?它已经失去了十年的扩展支持!无论如何,这就是引入WITH子句(以及ANSI-92 join语法)的版本。它在文档中 您可以使用Oracle 9i中提供的分析函数执行此操作:
with exmv as
(select max(purchase_price) as mx_price
from movie)
select movie.*
from movie
cross join exmv
where movie.purchase_price >= exmv.mx_price - 2
;
您可以在
WHERE
子句的子查询中使用MAX
函数,如下所示:
select *
from (
select m.*, max(purchase_price) over() as max_purchase_price
from movie m
) m
where purchase_price >= max_purchase_price - 2
您可以使用窗口功能:
SELECT * FROM MOVIE
WHERE PURCHASE_PRICE >= (SELECT MAX(PURCHASE_PRICE) - 2 FROM MOVIE)
请添加示例数据、预期结果和一些逻辑来创建查询以及您尝试的内容。
select t.*
from (select t.*, max(PURCHASE_PRICE) over () as max_price
from t
) t
where PURCHASE_PRICE >= max_price - 2;