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

如何通过SQL窗口函数实现按组条件统一赋值?

问题描述

现有数据表结构及数据如下:

Nameclassscore
AllenA0
SarahA1
DerekA0
JoshB1
PiniB0
KarenC0
LouisC0

需求:按class分组,若组内score总和≥1,则为该组所有记录新增的pass字段赋值1;否则赋值0。期望结果如下:

Nameclassscorepass
AllenA01
SarahA11
DerekA01
JoshB11
PiniB01
KarenC00
LouisC00

希望用窗口函数实现,求具体方法。

解决方案

用窗口函数可以直接实现这个需求,核心是先计算每个班级的总分,再根据总分判断pass字段的值。具体SQL语句如下:

SELECT
    Name,
    class,
    score,
    CASE
        WHEN SUM(score) OVER (PARTITION BY class) >= 1 THEN 1
        ELSE 0
    END AS pass
FROM
    your_table; -- 替换为你的实际表名

关键逻辑说明:

  • SUM(score) OVER (PARTITION BY class):这是窗口函数的核心部分,PARTITION BY class指定按班级分组,SUM(score)计算每个分组的总分,这个总分会对应到该班级的每一条记录上。
  • CASE表达式:基于分组后的总分进行判断,给每条记录的pass字段赋值1或0。

执行这条SQL就能直接得到目标结果,不需要额外的表关联或子查询,效率较高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 23:15:44