【项目中MySQL统计列中属性出现次数场景解决,或统计一列中不同值出现次数的场景】

功能需求

在A表中,包含了作业单位,和作业类型两个属性:
其中 单位单位不固定,动态添加;
作业类型固定:12种;
需求:
统计出每个单位对应得12种作业类型的记录条数。
如图:(因涉及私密,所以模糊处理。)
在这里插入图片描述

代码实现

方法1、使用 SUM的方式实现

思路:1.先对作业单位进行分组,GROUP BY。
2、其次对作业类型每一种进行查询,并使用SUM统计数量,使用IF充当过滤条件

SELECT Applicant,
       SUM(OperationTypeName='动火作业') AS A1,
       SUM(OperationTypeName='动土作业') AS A2,
       SUM(OperationTypeName='临时用电') AS A3,
       SUM(OperationTypeName='高处作业') AS A4,
       SUM(OperationTypeName='11') AS A5,
       SUM(OperationTypeName='dd') AS A6,
       SUM(OperationTypeName='ee') AS A7,
       SUM(OperationTypeName='ff') AS A8,
       SUM(OperationTypeName='yy') AS A9

FROM t_sep_zyxk_jc
WHERE DeleteFlg=0
GROUP BY Applicant
查询结果

类比需求图,将结果封装返回即可。
在这里插入图片描述

方法2、使用 COUNT的方式实现

思路:实现方式跟上面一样,将SUM换成COUNT即可

SELECT Applicant,
       COUNT(OperationTypeName='动火作业') AS A1,
       COUNT(OperationTypeName='动土作业') AS A2,
       COUNT(OperationTypeName='临时用电') AS A3,
       COUNT(OperationTypeName='高处作业') AS A4,
       COUNT(OperationTypeName='11') AS A5,
       COUNT(OperationTypeName='dd') AS A6,
       COUNT(OperationTypeName='ee') AS A7,
       COUNT(OperationTypeName='ff') AS A8,
       COUNT(OperationTypeName='yy') AS A9

FROM t_sep_zyxk_jc
WHERE DeleteFlg=0
GROUP BY Applicant

方法3、使用SUM+IF的方式实现

SELECT Applicant,
       SUM(IF(OperationTypeName='动火作业',1,0)) AS A1,
       SUM(IF(OperationTypeName='动土作业',1,0)) AS A2,
       SUM(IF(OperationTypeName='临时用电',1,0)) AS A3,
       SUM(IF(OperationTypeName='高处作业',1,0)) AS A4,
       SUM(IF(OperationTypeName='动火作业',1,0)) AS A5,
       SUM(IF(OperationTypeName='动火作业',1,0)) AS A6,
       SUM(IF(OperationTypeName='动火作业',1,0)) AS A7,
       SUM(IF(OperationTypeName='动火作业',1,0)) AS A8,
       SUM(OperationTypeName is not null) AS '总和'

FROM t_sep_zyxk_jc
WHERE DeleteFlg=0
GROUP BY Applicant;

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值