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

使用T-SQL基于分组MAX()筛选电影数据行的技术需求

解决T-SQL中按影片分组并筛选最大总浏览量类型的问题

我明白你卡了一天的痛点——需要先汇总同一影片同一类型的浏览量,再筛选出每部影片里总浏览量最高的类型条目。下面就一步步拆解需求并给出可直接运行的T-SQL方案:

需求拆解

你的源数据里存在同一影片对应多条同类型/不同类型的记录,核心要做两步:

  1. 先按影片(Title)+类型(Genre)分组,计算每个组合的总浏览量(比如E.T.的Sci-fi类型总浏览量是34+2=36,Taken的Triller是60+40=100)
  2. 再按影片单独分组,筛选出每部影片中总浏览量最高的那一组数据

实现代码

这里用窗口函数ROW_NUMBER()来高效完成排序筛选,代码逻辑清晰且性能友好:

WITH GenreTotalViews AS (
    -- 第一步:汇总每个影片+类型的总浏览量
    SELECT 
        Title,
        Genre,
        SUM(Views) AS TotalViews
    FROM YourSourceTable -- 替换成你的实际表名
    GROUP BY Title, Genre
),
RankedGenres AS (
    -- 第二步:给每个影片下的类型按总浏览量降序排名
    SELECT 
        Title,
        Genre,
        TotalViews,
        ROW_NUMBER() OVER (PARTITION BY Title ORDER BY TotalViews DESC) AS RankNum
    FROM GenreTotalViews
)
-- 第三步:筛选出每个影片排名第一的条目(即总浏览量最高的类型)
SELECT 
    Title,
    Genre,
    TotalViews AS Views
FROM RankedGenres
WHERE RankNum = 1
ORDER BY Title;

代码细节说明

  • GenreTotalViews 公共表表达式(CTE):先完成基础的分组汇总,把同一影片同一类型的分散浏览量合并成总数值。
  • RankedGenres CTE:用ROW_NUMBER()窗口函数,以Title为分区依据(每部电影单独处理),按总浏览量从高到低排序,给每个条目分配唯一排名。
  • 最终查询只保留排名为1的条目,正好对应每部影片总浏览量最高的类型和数值。

验证结果

把你的源数据代入执行后,会精准得到你预期的结果:

+---------+---------+-------+
| Title   | Genre   | Views |
+---------+---------+-------+
| Mad Max | Sci-fi  | 169   |
| Titanic | Drama   | 6     |
| E.T.    | Sci-fi  | 36    |
| Taken   | Triller | 100   |
+---------+---------+-------+

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:54:02