如何在oracle select sql中获取不在GROUP BY子句中的其他列?

Var*_*Rao 2 sql oracle group-by greatest-n-per-group

我有一个包含这些数据的表 MOVIE。

MOVIE_ID  MOVIE_TITLE              CATEGORY        SALES_AMT
--------- ------------------------ --------------- ----------
M_0000004 The Boss Baby            Animation       2000
M_0000006 Star Wars: The Last Jedi Science Fiction 3000
M_0000007 Get Out                  Horror          4000
M_0000008 Million Dollar Arm       Action          2000
M_0000009 The Conjuring            Horror          1000
M_0000012 The Dark Knight          Action          3000
Run Code Online (Sandbox Code Playgroud)

我需要基于以下SALES_AMT方面的热门电影数据CATEGORY

所需的结果是这样的:

MOVIE_ID  MOVIE_TITLE              CATEGORY        SALES_AMT
--------- ------------------------ --------------- ----------
M_0000004 The Boss Baby            Animation       2000
M_0000006 Star Wars: The Last Jedi Science Fiction 3000
M_0000007 Get Out                  Horror          4000
M_0000012 The Dark Knight          Action          3000
Run Code Online (Sandbox Code Playgroud)

如果我使用 GROUP_BY 选项,我不能选择MOVIE_IDMOVIE_TITLE

select CATEGORY, MAX(SALES_AMT)
from MOVIE
group by CATEGORY
;
Run Code Online (Sandbox Code Playgroud)

Kac*_*per 5

尝试使用分析函数和子查询

select movie_id, movie_title, category, sales_amt 
from (
  select movie_id, movie_title, category, sales_amt, 
  row_number() over (partition by category order by sales_amt desc) r 
  from movie
) where r = 1
Run Code Online (Sandbox Code Playgroud)