以下のクエリはデータを取り込んで 'レポート'を作成しますが、基本的には CSRエージェントによってグループ化された数値の行項目です。それが正確で正確であり、クエリの後に結果をCSVとして保存します。しかし、 それは私に個々のレコードを与えているだけなので、それをExcelに入れ、数式を使って 「合計」行を挿入して、合計する必要がある列を基本的に合計しなければなりません。csv/excelレポートのSQLクエリで合計/行を作成する
このsqlクエリはPHPスクリプトで実行されますが、私は を各ユーザの合計することができるように、これを変更する最善の方法は不明です。これは何らかの形で「これはユーザー7200 のレコードの終わりなので、ユーザー7200の合計行を挿入してから、ユーザー7206のレコードまたはそのようなものへ移動する必要があります。
スクリーンショットは、「x」と1または0の代わりにヌルスペースを使用してレポートをそのまま表示するので、私のExcelの公式では 私はカウント "IF"変数を使用しています。私はこのスクリプトと似たようなことができることを期待しています。クエリと のスクリーンショットは次のとおりです。ここで
はフィドルです:フィドルのhttp://sqlfiddle.com/#!9/b6a568/1
出力は正確なクエリの出力である、唯一の違いは、スクリプトは、CSVにそれを置くです。
「x」の数を合計する「合計」行を作成する方法があり、継続時間と保留時間の秒数を にすることができます。
私がこれをどのようにリファクタリングできるかについてのご意見は大変ありがとうございます。
$result = mysqli_query($conn2,
"SELECT
FirstN
, LastN
, Extension
, Recieved
, Recieved_Known
, Outbound
, Outbound_Known
, Missed_No_VM
, Missed_VM
, Missed_Known
, Calling_Number
, Called_Number
, Start_Time
, End_Time
, Talk_Time_Seconds
, Hold_Time_Seconds
FROM (
SELECT distinct
firstn
, lastn
, c.extension
, CASE WHEN LEGTYPE1 = 2 AND ANSWERED = 1 THEN 'x' ELSE '' END AS Recieved
, case when LEGTYPE1 = 2 and answered = 1 and CALLINGPARTYNO = k.phone_number then 'x' ELSE '' end as Recieved_Known
, CASE WHEN LEGTYPE1 = 1 then 'x' ELSE '' end AS Outbound
, case when FINALLYCALLEDPARTYNO = kn.long_number then 'x' ELSE '' end as Outbound_Known
, case when legtype1 = 2 and answered = 0 and finallycalledpartyno not like '%oice%' then 'x' ELSE '' end as Missed_No_VM
, case when finallycalledpartyno like '%oice%' then 'x' ELSE '' end as Missed_VM
, case when legtype1 = 2 and ANSWERED = 0 and CALLINGPARTYNO = k.phone_number then 'x' ELSE '' end as
Missed_Known
, a.CALLINGPARTYNO AS Calling_Number
, a.FINALLYCALLEDPARTYNO AS Called_Number
, b.starttime as Start_Time
, b.endtime as End_Time
, b.duration as Talk_Time_Seconds
, a.holdtimesecs as Hold_Time_Seconds
FROM ambition.session a
INNER JOIN ambition.callsummary b ON a.NOTABLECALLID = b.NOTABLECALLID
right join jackson_id.users c on a.callingpartyno = c.extension or a.finallycalledpartyno = c.extension
LEFT JOIN ambition.known_numbers k ON a.callingpartyno = k.phone_number
left join ambition.known_numbers kn on a.finallycalledpartyno = kn.long_number
WHERE a.ts >= '2017-12-07' -- curdate()
and(a.CALLINGPARTYNO in (select extension from ambition.ambition_users) OR a.finallycalledpartyno IN (select extension from ambition.ambition_users))
) x
order by extension;") or die(mysqli_error($conn2));
良い測定のためのスクリーンショット:
私はこれが私に別々に合計を与えることがわかります。あなたは私がこれらのレコードを挿入する方法があるかどうか知っていますか?例えば、ユーザーのための単一のレコードを、次にこの行ですか?または何も私は両方の1つのCSVに何らかの形で挿入する可能性があります –
これ以上について考えると、私は単一のレコードの周りにforeachループを使用し、ユーザーIDに基づいて合計を挿入することを望むだろう。私はちょうどここに到達していますが、私はそれをもう少し考えなければなりません。 –
私はあなたの要求を適切に得られないと思います。しかし、私は単一のクエリを使用してこれを行う方法はわかりません。 –