簡體   English   中英

MySQL中自定義公式的語法

[英]Syntax for a custom formula in mysql

我有一個可以正常工作的mysql查詢,但我需要向其中添加三個平均值/百分比公式。 該查詢用於呼叫中心指標。

我真正的問題是我的第三個指標missed_call_score 我需要做這樣的事情:

(missed calls / total talk time) * (average calls per CSR / total calls ) * 100 現在,我在下面的查詢中錯過了通話,通話總時間和通話總次數,但是為了獲得每個csr的平均通話次數,我需要取出最高和最低的總通話次數(在15個CSR中),因此我m剩余13個。 我需要將這些總數相加,並假定除以13,這將在除去最高/最低值后得出每個CSR的平均值。

我的問題是如何將其合並到查詢中?

這是我現有查詢的必要部分:

SELECT 
 , extension
 , Total_Outbound+Total_Missed+Total_Received AS Total_Calls
 , Total_Missed
 , Total_Talk_Time_minutes

 /*Here I'll add average_TT_day, average_TT_call, missed_call_score*/

FROM (
  SELECT 
  , c.extension  
  , sum(if(Answered = 1,0,1)) AS Total_Missed     
  , round(sum(Duration) / 60,2) AS Total_Talk_Time_minutes

  /*Here I'll have my new averages and score formula */

    FROM ambition.session a
    INNER JOIN ambition.callsummary b ON a.NOTABLECALLID = b.NOTABLECALLID
  WHERE b.ts between curdate() - interval 5 day and now()

  GROUP BY c.extension  
 ) ;

因此,我需要將我的三個指標添加到我留下評論的select語句中。 最重要的是,對於未接來電分數,它需要看起來像這樣:

(Total_Missed/Total_Talk_Time_Minutes) * ((SUM(all total calls - highest and lowest) / 13) / sum of total_calls) * 100

顯然,這是偽代碼,並非完全正確,而是一個主意。

最后,這是我應該得到的示例:

extension | Total calls | missed calls | total talk time | missed call score
----------------------------------------------------------------------------
1               10              5               20              6.5     
2               8               2               15              3.4             
3               5               3               10              7.8
4               2               2               5               10.4

Formulas:

Total call sum = 25
Total call sum without high and low = 13
average calls per CSR = (13/2) = 6.5

extension 1 = (5/20) * (6.5/25) * 100
extension 2 = (2/15) * (6.5/25) * 100
extension 3 = (3/10) * (6.5/25) * 100
extension 4 = (2/5) * (6.5/25) * 100

無法訪問您的數據,這很難。 但是這樣的事情應該為您指明正確的方向:

SELECT TOP 95 PERCENT
 , extension
 , Total_Outbound+Total_Missed+Total_Received AS Total_Calls
 , Total_Missed
 , Total_Talk_Time_minutes
 , banana.Total_Talk_Time_minutes / SUM(banana.[row]) AS average_TT_call
 , (Total_Missed / Total_Talk_Time_minutes) * ([CallsPerExt].county / SUM([banana.row])) AS [Missed Call Score]

 /*Here I'll add average_TT_day, average_TT_call, missed_call_score*/

FROM (
  SELECT TOP 95 PERCENT
  , c.extension  
  , sum(if(Answered = 1,0,1)) AS Total_Missed     
  , round(sum(Duration) / 60,2) AS Total_Talk_Time_minutes
  , 1 AS [row]

  /*Here I'll have my new averages and score formula */

    FROM ambition.session a
    INNER JOIN ambition.callsummary b ON a.NOTABLECALLID = b.NOTABLECALLID
  WHERE b.ts between curdate() - interval 5 day and now()

  GROUP BY c.extension  
  ORDER BY round(sum(Duration) / 60,2) --Total_Talk_Time_minutes
 ) AS banana 
 OUTER APPLY (select count(*) as county, b.extension from banana b group by b.extension) AS [CallsPerExt]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM