门店对账、部门业绩拆解时,分析师往往既要保留每一行明细,又要在同一行上看「本大区一共卖了多少」「这一行占本部门多少」。行不能少,组上的合计、平均或占比必须贴回到每一条记录上。

如果采用传统手工方式,只能按部门筛一遍再写 SUMIF,然后把结果向下填充。分组一增一减,引用范围立刻错位;想另存一份带合计列的表,又要整表复制,无法形成可回溯、可自动复跑的工作流。

DT-Bot 的 「组内加列」 算子专为解决此类组内统计贴回明细而设计。它按分组计算本组合计、平均或占比,再写到每一行上,行数不变。未点名结果表时就地改原表;点名则原表不动,合计贴在新表上。只要各组一个数、明细不要了,请使用「聚合计算」,不要把本算子写成压行短表。

一、 核心能力与适用场景

「组内加列」算子聚焦于在明细上行数不变地贴组统计,覆盖以下三大核心能力:

核心能力 解决什么业务问题 典型业务场景
贴组合计 把本组度量的合计写到该组每一行,组内各行看到同一个组值。 按大区把销售额合计贴到每一行,华东两行都带上本区合计。
组内占比 每一行除以本组合计,看出该行占本组多少。 看每人、每店占本部门或本大区销售额的比例。
写出新表(原表只读) 需要保留未加列的底稿时,把贴列结果落到点名的新表。 按门店贴回合计,输出「销售明细_组内合计」,源表不动。

相对本组做偏离或标准化、以及组内行数等,提示词里写清「按谁分组、贴什么」即可;未点名新列时,合计列按原文约定称为「销售额_组内合计」一类名称。

二、 边界指南:它与相近算子有何区别?

在构建数据工作流时,理解算子之间的职责边界至关重要:

比较维度 「组内加列」算子 「聚合计算」算子 「新增列」算子 「明细排名」算子
主要定位 组统计贴回每一行 压行汇总出短表 无分组的行级公式加列 全表或组内名次/百分位
输出机制 默认就地加列,行数不变;点名则出新表 源表只读,另写短表 目标表行数不变,就地或按约定加列 默认就地加名次列,行数不变
典型动作 本区合计、组内占比贴到明细 每店一行合计,明细不再出现 单价×数量、常量列、序号列 组内第几名、并列跳号
如何选择 “明细还在,只要每行带上本组合计或占比” “只要各组一个数,明细不要了” “没有分组,只是本行算一列” “要的是第几名,不是合计或占比”

三、 提示词编写规范与公式

「组内加列」算子支持自然语言直接表达,建议遵循以下标准的三要素编写公式:

【目标表】 + 【按谁分组、贴什么】 + 【结果表名或新列名(可选)】

1. 目标表范围表达

  • 单表精准点名:例如 “销售明细” :...;
  • 默认当前流转表:未显式提及表名时,继承上一节点连线流入的数据表。

2. 按谁分组、贴什么

  • 贴合计:按 “大区” 把 “销售额” 合计贴到每一行;
  • 贴占比:按 “大区” 给每一行加一列,看该行销售额占本大区多少;
  • 提示词写清分组列与度量列;合计、平均、占比、组内行数等,以提示词写明的为准。

3. 输出与列名

  • 就地加列:不写结果表名,则在原表上加列;
  • 写出新表:输出 “销售明细_组内合计”,原表不动;
  • 点名新列:新列叫 “大区销售额”;没起新列名时,原文案例中合计列叫「销售额_组内合计」,占比列叫「销售额_组内占比」。
“销售明细” :按 “大区” 把 “销售额” 合计贴到每一行。

四、 核心功能与图解实战

以下结合真实企业数据场景,展示「组内加列」在不同需求下的处理效果:

场景 1:贴组合计(组内各行看到同一个组值)

业务背景:大区运营要在三行门店明细上同时看到「本区销售额合计」,以便计算费用分摊。华东两行必须都带 200,不能只写在小计行上。

【处理前:销售明细】

大区 门店 销售额
华东 东门店 80
华东 西门店 120
华北 北门店 50

【执行提示词】

“销售明细” :按 “大区” 把 “销售额” 合计贴到每一行,新列叫 “大区销售额”。

【处理后:销售明细(就地加列)】

大区 门店 销售额 大区销售额 变更说明
华东 东门店 80 200 本区 80 + 120,两行都写 200
华东 西门店 120 200 与东门店同一组值
华北 北门店 50 50 本组只有一行,合计即自身

逻辑详解:行数仍是 3,明细列原样保留。新列按提示词命名为「大区销售额」。这不是压行:东门店、西门店两行都还在。


场景 2:组内占比(行值 ÷ 本组合计)

业务背景:要看每家门店占本大区销售额的份额,用于拆任务。占比必须按组计算:华北只有一行时,占比应为 1,而不是拿全国合计做分母。

【处理前:销售明细】

大区 门店 销售额
华东 东门店 80
华东 西门店 120
华北 北门店 50

【执行提示词】

“销售明细” :按 “大区” 给每一行加一列,看该行销售额占本大区多少。

【处理后:销售明细(就地加列)】

大区 门店 销售额 销售额_组内占比 变更说明
华东 东门店 80 0.4 80 ÷ 200 = 0.4
华东 西门店 120 0.6 120 ÷ 200 = 0.6
华北 北门店 50 1 50 ÷ 50 = 1

逻辑详解:未点名新列时,占比列名为「销售额_组内占比」。分母是本大区合计,不是全表合计。行数不变,源表就地多一列。


场景 3:写出新表(原表不动)

业务背景:底稿「销售明细」要留给审计抽查,试验用的组内合计必须落到另一张表。没起新列名时,合计列按约定叫「销售额_组内合计」。

【处理前:销售明细】

门店 品类 销售额
东门店 饮料 30
东门店 零食 70
西门店 饮料 40

【执行提示词】

“销售明细” :按门店把销售额合计贴回每一行,输出 “销售明细_组内合计”。

【处理后:销售明细_组内合计(新表;源表只读)】

门店 品类 销售额 销售额_组内合计 变更说明
东门店 饮料 30 100 本店 30 + 70
东门店 零食 70 100 与饮料行同一店合计
西门店 饮料 40 40 本店仅一行

逻辑详解:工作空间新增「销售明细_组内合计」,三行与源表行数一致;源表「销售明细」不增加列。未点名新列时,合计列名为「销售额_组内合计」。

五、 常见问题与操作贴士(FAQ)

Q1:为什么执行后行数没有变少?

答:这是「组内加列」的核心设计。它把组统计贴回每一行,不压行。若你只要各组一个数、明细不要了,请改用 「聚合计算」。

Q2:不写结果表名和不写新列名时,分别会发生什么?

答:不写结果表名,就地在原表加列。写出新表时,源表不动。没起新列名时,原文案例中合计列为「销售额_组内合计」,占比列为「销售额_组内占比」;点名则用你写的列名(如「大区销售额」)。

Q3:组内第几名、没有分组的行级公式,能写在本算子里吗?

答:组内第几名请用 「明细排名」。没有分组、只是本行公式(如单价×数量)请用 「新增列」。本算子的统计量必须带分组。

Q4:相对本组做偏离或标准化,需要另找算子吗?

答:原文将「相对本组做偏离或标准化」列为本算子适用需求。提示词写清按谁分组、贴什么即可;不要为此改写成「聚合计算」压行。

六、 关联算子导航