如何计算分组依据的多行百分比

时间:2019-08-09 13:29:50

标签: mysql sum multiple-columns percentage

对于某些机票的解决率,我想计算相对于同一月份相同类型的机票总数的已解决机票百分比 我能够获取已解决票证的数量,但是我错过了同一类型和同一月所有票证的总数,因此始终为0%或100%。 Question =如何累积票证数量,以便可以计算出每月已解决票证的百分比,类型,状态?

我按时分组,输入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;

对于前两行(类型= 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

1 个答案:

答案 0 :(得分:0)

似乎您输入了错误的()

应该是

IntelliJ