对于我们的一些工单的解决率,我想计算解决工单相对于同月内相同类型工单总数的百分比 我能够获得已解决的票证数量,但我缺少同一类型和同一个月的所有票证总数,因此始终为 0% 或 100%。 问题=我如何累计票证数量,以便计算每月已解决票证的百分比、类型、状态?
我按时间分组,输入“AND”状态(请参阅下面的查询)。所以总数总是被状态的分组所否决。 我尝试过:累积、汇总、枢轴、联合
SELECT date_format(st.createdDate,'%Y%m') createdAt,
count(st.id) COUNT,
st.typeId,
st.status,
sum(st.status2) status2,
sum(st.notStatus2) notStatus2,
((sum(st.status2)/sum(st.status2)+sum(st.notStatus2))*100) AS pct
FROM
(SELECT t.id,
t.added createdDate,
t.type_id typeId,
tt.name ticketType,
t.status,
if(t.status=2,1,0) AS status2,
if(t.status!=2,1,0) AS notStatus2,
datediff(closed,added) doorloopTijdDgn
FROM tickets t
JOIN ticket_types tt ON tt.id=t.type_id
WHERE added BETWEEN '2018-07-01' AND '2019-07-01' ) AS st #singletickets
GROUP BY createdAt,
ticketType,
status;
对于前两行 (type=62),我预计 37 个已解决的票证中有 33 个 = 89.2%
所以pct的“sum(st.status2)+sum(st.notStatus2)”应该是37
现在我得到:
createdAt count typeId status status2 notStatus2 pct
201807 33 62 2 33 0 100.0000
201807 4 62 6 0 4 NULL
201807 31 38 2 31 0 100.0000
201807 3 38 6 0 3 NULL
201807 15 12 2 15 0 100.0000
201807 11 11 2 11 0 100.0000
201807 1 48 2 1 0 100.0000
201807 19 30 2 19 0 100.0000
201807 5 9 2 5 0 100.0000
201807 12 33 2 12 0 100.0000
201807 1 52 2 1 0 100.0000
201807 2 45 2 2 0 100.0000
201807 41 58 2 41 0 100.0000
201807 3 58 6 0 3 NULL
201807 1 41 6 0 1 NULL
201807 1 13 2 1 0 100.0000
201807 35 66 2 35 0 100.0000
201807 8 20 2 8 0 100.0000
201807 1 20 4 0 1 NULL
201807 5 10 2 5 0 100.0000
201807 12 68 2 12 0 100.0000
201807 1 65 2 1 0 100.0000
201807 20 7 2 20 0 100.0000
201807 2 19 2 2 0 100.0000
201807 4 43 2 4 0 100.0000
201807 3 34 2 3 0 100.0000
201807 24 67 2 24 0 100.0000
201807 43 46 2 43 0 100.0000
201807 1 46 6 0 1 NULL
我想要什么:
createdAt count typeId status status2 notStatus2 pct
201807 33 62 2 33 0 89.2000
201807 4 62 6 0 4 0
201807 31 38 2 31 0 93.9000
201807 3 38 6 0 3 0
201807 15 12 2 15 0 100.0000
201807 11 11 2 11 0 100.0000
201807 1 48 2 1 0 100.0000
201807 19 30 2 19 0 100.0000
201807 5 9 2 5 0 100.0000
201807 12 33 2 12 0 100.0000
201807 1 52 2 1 0 100.0000
201807 2 45 2 2 0 100.0000
201807 41 58 2 41 0 93.2000
201807 3 58 6 0 3 0
201807 1 41 6 0 1 0
201807 1 13 2 1 0 100.0000
201807 35 66 2 35 0 100.0000
201807 8 20 2 8 0 88.8000
201807 1 20 4 0 1 0
我有 mysql 5.7.12 可以使用
最佳答案
看来你错了()
应该是
((sum(st.status2)/(sum(st.status2)+sum(st.notStatus2)))*100) as pct
关于mysql - 如何通过分组计算多行的百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57431145/