如图所示:
一个问题件有三个级别处理人
一级处理人,二级处理人,三级处理人分别是三个字段。
且一个人只会在一个问题件处理一次。
怎么统计每个人处理的问题件数量
太简单,先加3个字段分别代表一级的件数、二级的件数、三级的件数,直接update3个字段,给3个字段赋值,名称补位空直接等于件数,名称为空,为0;
然后按一级名称分组查询一级件数、按二级名称分组查询二级件数、按三级名称分组查询三级件数。把3个查询结果union all起来就行了。
以上我的思路,可能有不准确的地方,自己试试吧。
也可以不加字段,通过case when 或nvl等条件判断语句,去计算每行名称对应的件数,然后合并结果就行了
你把SQL写出来最好了
@Yimi依米: 字段名 name1,name2,name3,num, 表名 table1
select temp1.name1 name,temp1.sum(name1num) num from (select name1,name2,name3,nvl2(name1,num,0) name1num,nvl2(name2,num,0) name2num,nvl2(name3,num,0) name3num from table1)temp1 group by temp1.name1
union all
select temp2.name2 name,temp2.sum(name2num) num from (select name1,name2,name3,nvl2(name1,num,0) name1num,nvl2(name2,num,0) name2num,nvl2(name3,num,0) name3num from table1)temp2 group by temp2.name2
union all
select temp3.name3 name,temp3.sum(name2num) num from (select name1,name2,name3,nvl2(name1,num,0) name1num,nvl2(name2,num,0) name2num,nvl2(name3,num,0) name3num from table1)temp3 group by temp3.name3
没有测试,哈哈。无聊,随便写的
@么么哒2021: 虽然我看着晕,但是还是谢谢
sql的话,就是关联用户表,根据用户分组,用count()计算每个人的总数
不是SQL
@Yimi依米: 不是sql那是啥
手动查累加吗。。。
@小确幸~: 数据分析,做图的。
如果用SQL写,要怎么写啊?
是要写sql查吗 表主要字段能说下不
我再截图
实际上你就是需要把这三个字段都变成三行呗?
我需要统计每个人处理了多少个问题件
每人只能处理一次那不就是计算每个人在这个表中出现的次数吗
要是能用linq的话就好了,我会把三个字段相加形成只有一个(复合姓名列)的临时表,然后名称表和临时表关联,where筛选掉 复合姓名 中不包含 姓名 的列,然后groupby(姓名列) 分组,.Count()计数即可
– godcloudy 3年前