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

如何修正SQL查询以统计指定4个电影时长区间的计数?

问题修正方案

你的查询出现区间重复的原因是GROUP BY子句用了runtime字段,这会让数据库按每一个具体的时长值单独分组,而不是按你定义的时长区间分组。

修正方法很简单,把GROUP BY的字段改成你用CASE生成的runtime_range即可:

SELECT 
      CASE WHEN runtime >= 0 AND runtime <= 60 THEN '0-60'
           WHEN runtime > 60 AND runtime <= 120 THEN '61-120'
           WHEN runtime > 120 AND runtime <= 180 THEN '121-180'
           ELSE 'Over 180'
      END runtime_range,
      count(*) as Movie_Runtime
FROM movies
GROUP BY runtime_range;

如果使用的是不支持在GROUP BY中使用别名的数据库(如老版本MySQL),可以直接把CASE表达式放到GROUP BY里:

SELECT 
      CASE WHEN runtime >= 0 AND runtime <= 60 THEN '0-60'
           WHEN runtime > 60 AND runtime <= 120 THEN '61-120'
           WHEN runtime > 120 AND runtime <= 180 THEN '121-180'
           ELSE 'Over 180'
      END runtime_range,
      count(*) as Movie_Runtime
FROM movies
GROUP BY 
      CASE WHEN runtime >= 0 AND runtime <= 60 THEN '0-60'
           WHEN runtime > 60 AND runtime <= 120 THEN '61-120'
           WHEN runtime > 120 AND runtime <= 180 THEN '121-180'
           ELSE 'Over 180'
      END;

这样就能得到每个时长区间的总计数,不会再出现重复的区间行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 22:50:39