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

如何用SQL窗口函数对比影片时长与所有影片的最长时长?

解决方案

其实窗口函数刚好能优雅解决这个需求,用MAX()窗口函数就能让每一行都带上全局最长时长,对比起来很直观。

实现SQL

SELECT 
    movie,
    runtime,
    MAX(runtime) OVER () AS max_runtime,
    -- 可以直接计算差值,让对比更直观
    runtime - MAX(runtime) OVER () AS runtime_diff_from_max
FROM movie;

查询结果

movieruntimemax_runtimeruntime_diff_from_max
Titanic240300-60
Avengers3003000

说明

  • MAX(runtime) OVER ()里的OVER()没有指定分区,会计算整个表的最长时长,然后把这个值附加到每一行上,完美满足"每部影片和全局最长时长对比"的需求。
  • 你提到普通查询解决不了?其实用子查询也能实现:SELECT movie, runtime, (SELECT MAX(runtime) FROM movie) AS max_runtime FROM movie,但窗口函数的写法更简洁,后续如果要扩展需求(比如按年份分组求该年最长时长),只需要在OVER()里加PARTITION BY year就行,灵活性更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 01:40:27