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

SQL条件分组需求:以Type='A'为起始创建Group列

按Type="A"分组生成Group列的实现方法

现有包含Date和Type两列的数据表,需要新增Group列,规则为每当Type取值为"A"时,标记为一个新分组的起始,后续的"B"行归属于当前分组,效果如下:

DateTypeGroup
2019-09-26A1
2019-09-26B1
2019-10-09B1
2020-08-18A2
2020-09-25B2
2020-09-27B2
2021-02-19B2
2021-07-04A3
2021-08-04B3
2022-03-17A4
2022-05-01B4
2022-05-05B4

以下是不同工具的实现方案:

1. SQL实现

核心思路是用窗口函数累加Type="A"的出现次数,生成分组编号:

SELECT 
    Date,
    Type,
    SUM(CASE WHEN Type = 'A' THEN 1 ELSE 0 END) OVER (ORDER BY Date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS `Group`
FROM your_table_name;

ORDER BY Date确保按时间顺序分组,窗口函数会从第一行到当前行累加符合条件的计数,得到连续的分组编号。

2. Pandas(Python)实现

利用布尔序列的累加操作直接生成分组:

import pandas as pd

# 加载数据(示例为读取csv,可替换为其他加载方式)
df = pd.read_csv('your_data.csv')

# 生成Group列
df['Group'] = (df['Type'] == 'A').cumsum()

# 输出结果
print(df)

df['Type'] == 'A'生成布尔序列(True对应1,False对应0),cumsum()对其累加,每次遇到"A"就递增分组编号,后续"B"保持当前编号。

3. Excel实现

假设数据从A2(Date)、B2(Type)开始,在C2单元格输入以下公式,下拉填充即可:

=SUM($B$2:B2="A")

混合引用$B$2:B2会随下拉扩展范围,计算从B2到当前行中"A"的数量,即分组编号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 00:45:55