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

SQL多条件多计数列需求:统计操作员前日操作次数

工单操作统计解决方案

首先咱们得理清楚核心需求:从每日更新的Data_Table里,统计每位操作员在前一天完成的开单、关单、取消操作次数,最终输出一个清晰规整的统计表格。

1. 先明确原始表结构(补充完整示例数据)

原始Data_Table的结构和样例数据如下:

LOCATIONDATEREFERENCEOPENED_IDCLOSED_IDCANCELLED_ID
NYC201801021234511232340
TEX201801021234523453450
LA201801021234536780678
CHI201801021234541232340

这里要注意:ID为0代表该工单未执行对应操作,统计时需要排除这类无效数据。

2. 统计实现逻辑(以SQL为例)

如果用SQL来做每日自动统计,咱们可以通过UNION ALL把三类操作拆分成独立行,再按操作员ID分组聚合:

-- 统计前一日的各类操作次数
SELECT
  operator_id,
  SUM(CASE WHEN operation_type = 'OPENED' THEN 1 ELSE 0 END) AS opened_count,
  SUM(CASE WHEN operation_type = 'CLOSED' THEN 1 ELSE 0 END) AS closed_count,
  SUM(CASE WHEN operation_type = 'CANCELLED' THEN 1 ELSE 0 END) AS cancelled_count
FROM (
  -- 提取有效开单操作
  SELECT
    OPENED_ID AS operator_id,
    'OPENED' AS operation_type
  FROM Data_Table
  WHERE DATE = DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 DAY), '%Y%m%d')
    AND OPENED_ID != 0
  UNION ALL
  -- 提取有效关单操作
  SELECT
    CLOSED_ID AS operator_id,
    'CLOSED' AS operation_type
  FROM Data_Table
  WHERE DATE = DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 DAY), '%Y%m%d')
    AND CLOSED_ID != 0
  UNION ALL
  -- 提取有效取消操作
  SELECT
    CANCELLED_ID AS operator_id,
    'CANCELLED' AS operation_type
  FROM Data_Table
  WHERE DATE = DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 DAY), '%Y%m%d')
    AND CANCELLED_ID != 0
) AS operation_details
GROUP BY operator_id
ORDER BY operator_id;

3. 理想统计表格输出

执行上述SQL后,会得到这样的最终统计结果(对应示例数据):

operator_idopened_countclosed_countcancelled_count
123200
234020
345110
678101

额外小贴士

如果用Python Pandas这类工具处理,逻辑是相通的:先把三列操作ID拆成「操作员ID-操作类型」的行数据,再分组统计各类操作的次数即可,同样要记得过滤ID为0的无效项。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:28:45