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

SQL CASE分支为何设1而非2?设置2后的结果及计算逻辑咨询

CASE分支数值选择的问题解析

为什么用1而不是2或3?

这里用1是为了统计符合条件的记录条数——每匹配到一条对应rating的影片记录,CASE就返回1,SUM函数把这些1加起来,得到的就是该rating的影片总数。用1是最直观的计数逻辑,因为1代表“1条记录”,刚好对应计数需求。

设置2后的结果与计算逻辑

如果把THEN后面的1改成2,计算逻辑就变成:每匹配到一条对应rating的记录,就给SUM贡献2,而不是1。
按照你给出的正确结果计算:

  • r的结果会是 195 × 2 = 390
  • pg的结果会是 194 × 2 = 388
  • pg13的结果会是 223 × 2 = 446

你尝试时得到300左右的数值,大概率是只修改了其中某一个分支的数值,或者测试时的数据有临时差异,但核心逻辑不变:SUM的结果等于「该rating的影片总数 × 你设置的数值」。

额外说明

本质上,SUM是对CASE返回的数值做累加:

  • 用1时,SUM的结果就是符合条件的记录数量(每个符合条件的记录贡献1)
  • 用任何非0数字n,SUM结果都是「记录数 × n」
  • 如果只是单纯计数,1是最合理的选择,用其他数字会改变结果的含义,不再是单纯的条数统计。

原SQL代码

SELECT 
SUM(CASE rating
    WHEN 'R' THEN 1
    ELSE 0
END) AS r,
SUM(CASE rating
    WHEN 'PG' THEN 1
    ELSE 0
END) AS pg,
SUM(CASE rating
    WHEN 'PG-13' THEN 1
    ELSE 0
END) AS pg13
FROM film;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 03:50:15