You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求SQL Server查询语句:提取每个年代盈利最高的Top1电影

提取各年代盈利最高Top1电影的SQL Server查询方案

你的原有查询仅对数据做了分组排序,并未筛选出每个年代的盈利Top1电影,所以会返回所有记录。以下是两种可行的解决方案:

方案一:仅取单部Top1(若有并列盈利最高,随机返回其中一部)

使用ROW_NUMBER()窗口函数,按年代分区、盈利降序排序,筛选排名为1的记录:

WITH RankedMovies AS (
    SELECT 
        decade,
        Movie_Title,
        Profit,
        -- 按年代分区,盈利降序生成排名
        ROW_NUMBER() OVER (PARTITION BY decade ORDER BY Profit DESC) AS rn
    FROM DW.IMDB_MOVIE
)
SELECT decade, Movie_Title, Profit
FROM RankedMovies
WHERE rn = 1
ORDER BY decade;

方案二:返回所有并列最高的电影(若同一年代有多部盈利相同的最高值)

如果需要保留所有并列第一的电影,改用RANK()函数:

WITH RankedMovies AS (
    SELECT 
        decade,
        Movie_Title,
        Profit,
        -- 并列最高会获得相同排名
        RANK() OVER (PARTITION BY decade ORDER BY Profit DESC) AS rn
    FROM DW.IMDB_MOVIE
)
SELECT decade, Movie_Title, Profit
FROM RankedMovies
WHERE rn = 1
ORDER BY decade;

说明

  • PARTITION BY decade:将数据按年代分组
  • ORDER BY Profit DESC:在每个年代组内按盈利从高到低排序
  • ROW_NUMBER()/RANK():生成组内排名,前者会给并列记录分配不同排名,后者保留相同排名

内容的提问来源于stack exchange,提问作者vsoni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 02:50:52