週ごとのレポートに使用するテーブルを作成していますが、最初にデータのアイデアを得るためにクエリから始めます。where/ifステートメントを使用して既存の値を見つけて合計/カウントする
以下、私の主な質問は現在ありませんが、現在の「合計」の列には、別の合計を表示するパートナー列が必要です。基本的には、これは電話に関するすべてのものなので、現在は電話の合計(合計通話、合計が不在、合計インバウンド、合計アウトバウンド)がありますが、それぞれの通話には既知の通話量私たちのデータベースの数字。
phone_number
というフィールドを持つambition.ambition_customer_data
というテーブルがあります。だから、私の質問で約8行見ている場合は、数字の合計か数を取得する必要があります。calledpartyno = ambition_customer_data.phone_number OR finallycalledpartyno = ambition_customer_data.phone_number
が意味があれば。
他の列については、同じことをする必要がありますが、下に表示されているlegtype
列に基点を置く必要がありますが、最初にこれを行う方法がわかっていれば、それらに適用することができます。私はSUMを実行することができたと思っていました(どこにcalledpartyno(ambition_customer_dataからphone_numberを選択してください))が動作しないようです。
私は現在、不完全なIFステートメントを持っています。私はこれを行うことができる最善の方法のヒント?
SELECT
u.firstn
, u.lastn
, c.extension
, SUM(IF(LEGTYPE1 = 1, 1, 0)) + -- outbound calls
SUM(IF(LEGTYPE1 = 2, 1, 0) AND ANSWERED = 1) + -- inbound calls
SUM(IF(Answered = 1, 0, 1)) AS Total_Calls
, sum(if calledpartyno =) /*HERE IS MY ISSUE CURRENTLY*/
, sum(if(Answered = 1,0,1)) AS Total_Missed
, sum(if(LEGTYPE1 = 2,1,0) and ANSWERED = 1) AS Total_Recieved
, sum(if(LEGTYPE1 = 1,1,0)) AS Total_Outbound
, round(sum(Duration)/60,2) AS Total_Talk_Time_minutes
, sum(if(Answered = 1,0,1))/(SUM(IF(LEGTYPE1 = 1, 1, 0)) + -- outbound calls
SUM(IF(LEGTYPE1 = 2, 1, 0) AND ANSWERED = 1) + -- inbound calls
SUM(IF(Answered = 1, 0, 1))) * 100 AS Percentage_Missed
FROM ambition.session a
INNER JOIN ambition.callsummary b
ON a.NOTABLECALLID = b.NOTABLECALLID
INNER join ambition.mxuser c
ON a.RESPONSIBLEUSEREXTENSIONID = c.EXTENSIONID
INNER join jackson_id.users u
on c.extension = u.extension
WHERE b.ts between curdate() - interval 5 day and now()
AND c.extension IN (7276,7314,7295,7306,7357,7200,7218,7247,7331,7255,7330,7000,7215,7240,7358,7312)
group by c.extension;