You need to enable JavaScript to run this app. 如何按指定条件对字段计数,实现日期分组多维度统计
优惠活动
大模型
产品
解决方案
定价
更多

如何按指定条件对字段计数,实现日期分组多维度统计

按指定分组维度做多条件计数的实现

核心逻辑是:以date为分组维度,单次扫描数据即可完成所有统计指标的计算,无需对同一数据多次做重复筛选。

常见实现方式

1. SQL 实现

利用聚合函数结合条件判断,仅对满足指定条件的行做计数,有两种常用写法:

  • 兼容所有数据库的CASE WHEN写法:通过COUNT()自动跳过NULL值的特性,不满足条件的行返回NULL即可不被计入
    SELECT
      date,
      COUNT(train) AS `train count`,
      -- 统计condition1 > 0的行数
      COUNT(CASE WHEN condition1 > 0 THEN 1 END) AS `condition1 > 0`,
      -- 统计condition2为true的行数
      COUNT(CASE WHEN condition2 = true THEN 1 END) AS `condition2 is true`,
      -- 统计满足组合条件的行数
      COUNT(CASE WHEN condition1 > 0 AND condition2 = false THEN 1 END) AS `condition1 > 0 and condition2 is false`
    FROM 你的原始数据表
    GROUP BY date
    
  • 支持布尔隐式转换的数据库(MySQL、PostgreSQL等)可以简化为SUM()写法:布尔判断的结果会自动转换为1(true)和0(false),求和后就是满足条件的行数
    SELECT
      date,
      COUNT(train) AS `train count`,
      SUM(condition1 > 0) AS `condition1 > 0`,
      SUM(condition2 = true) AS `condition2 is true`,
      SUM(condition1 > 0 AND condition2 = false) AS `condition1 > 0 and condition2 is false`
    FROM 你的原始数据表
    GROUP BY date
    

注意:按照你给出的原始明细数据计算,date=1分组的实际统计结果应为:总train数3、condition1>0的有2条、condition2为true的有1条、组合条件满足的有1条;date=2分组的统计结果为总train数1、各条件计数1、1、0,你给出的期望表数值与实际逻辑反向,可以核对下统计规则。


2. Pandas 实现

适合本地Python环境下的数据统计,分组后聚合即可完成计算,数据量大时优先选择提前构造标记列的写法,避免lambda嵌套带来的性能开销:

  1. 先对每一行打条件标记,满足条件记1,不满足记0
    import pandas as pd
    
    # 读取原始数据到df中
    df['cond1_gt0_flag'] = (df['condition1'] > 0).astype(int)
    df['cond2_true_flag'] = (df['condition2'] == True).astype(int)
    df['comb_cond_flag'] = ((df['condition1'] > 0) & (df['condition2'] == False)).astype(int)
    
  2. 按date分组聚合所有指标
    stat_result = df.groupby('date').agg(
        train_count=('train', 'count'),
        condition1_gt0=('cond1_gt0_flag', 'sum'),
        condition2_is_true=('cond2_true_flag', 'sum'),
        comb_cond_count=('comb_cond_flag', 'sum')
    ).reset_index()
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.06 13:06:00