自学内容网 自学内容网

SQL 的窗口函数 sum() over(partition by 字段 )

sum() over(partition by 字段)的基本用法如下:

  1. 分组‌:通过partition by指定一个或多个字段进行分组。例如,sum(销售额) over(partition by 产品类别)会将销售额按照产品类别进行分组。
  2. 排序‌:通过order by指定一个或多个字段进行排序。例如,sum(销售额) over(partition by 产品类别 order by 时间)会在每个产品类别内,按照时间顺序对销售额进行累计求和。
  • 实例
  • select t1.id,
    t1.ticket_id,
    t1.flow_type,
    t1.ticket_status,
    t1.create_time,
    t1.filte,
    sum(t1.filte) over (partition by t1.ticket_id order by t1.id asc) as sum_round 
    from  (SELECT *,
    case when flow_type = 9 then 1 else 0 end as filte 
    FROM mall.work_order_flow 
    WHERE date(create_time)> '2024-12-31')t1;

    客户处理的工单可能会一次完成,也有可能客户还有其他疑问,会多次重启

  • 需求:在工作流表中统计已完成第一轮重启的工单的完成时间有多久

  • 工作流表为,工单在每个角色处处理完成并流转进入下一个角色就会生成一条记录,当工单重启时,flow_type = 9,其他状态非9

  • 故首先将flow_type = 9 的明细值自定义为1,其他为0,并重新生成一个字段fiflte

  • 工单号ticket_id 分区,按照自增字段id 升序排序,对fiflte值求和,当重启1次,累计总和就会加+1,故第一轮重启后流转的工单明细,fiflte值全部为1


原文地址:https://blog.csdn.net/yuanyuan___/article/details/145142519

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!