私はMYSQLにはかなり新しく、クエリを完了するのに援助が必要です。同じテーブルで2つのクエリを結合し、結果に列を追加してください
私は、私がPHPで使うことができるただ1つのクエリに必要な2つの別々のクエリを持っています。
次のSQLを使用して、Job_SLA_Due_Date以下のJob_Completed_Dateを持つ 'import'という表のレコード数を取得しています。
私のwhere句は、 'import'テーブルで過去6か月間に完了したジョブをチェックします。
SELECT Year(job_completed_date),
Month(job_completed_date),
Count(*) AS Completed_On_Schedule
FROM import
WHERE job_completed_date >= Last_day(Now()) + interval 1 day - interval 6 month
AND job_completed_date <= job_sla_due_date
AND (job_status = 'C'
OR job_status = 'C2'
OR job_status = 'C8')
GROUP BY Year(job_completed_date),
Month(job_completed_date)
ORDER BY job_completed_date ASC
結果出力が細かく、以下を生成します....
Year Month Completed_On_Schedule
2017 3 1155
2017 4 838
2017 5 881
2017 6 1095
2017 7 1073
2017 8 295
私の2番目のクエリが同じテーブルを使用して似ていますが、私が完了したジョブの合計数を探しています私はJob_SLA_Due_Dateについて心配していません。私が使っているSQLが.......
SELECT Year(job_completed_date),
Month(job_completed_date),
Count(*) AS Total_Completed
FROM import
WHERE job_completed_date >= Last_day(Now()) + interval 1 day - interval 6 month
AND (job_status = 'C'
OR job_status = 'C2'
OR job_status = 'C8')
GROUP BY Year(job_completed_date),
Month(job_completed_date)
ORDER BY job_completed_date ASC
で結果出力は、私が今必要なもの.....
Year Month Total_Completed
2017 3 1441
2017 4 1101
2017 5 1144
2017 6 1334
2017 7 1211
2017 8 311
予想通りであり、次を生成し、このように出力されます私は一緒に私の2つのクエリに参加し、Completed_On_Schedul割合、すなわち、スケジュール通りに完了したジョブの割合である%の_Completed_On_Scheduleと呼ばれる別の列を追加する必要が一言で言えばそう......
Year Month Completed_On_Schedule Total_Completed %_On_Schedule
2017 3 1155 1441 80.1
2017 4 838 1101 76.1
2017 5 881 1144 77
2017 6 1095 1334 82
2017 7 1073 1211 88.6
2017 8 295 311 94.8
e列はTotal_Completed列の列です。
本当にありがとうございます。
よろしく
アラン
スケジュールカウントを完了するためにcountの代わりにsumを使用することもできます。 – Acewin
@Acewin私は、このケースが必要でないときでも、OPが求めるものであり、別の状況で彼にとって役に立つかもしれないので、 'JOIN'バージョンを追加します。私はカウントするために 'SUM(1/0)'を使うのは好きではありません。あなたが 'COUNT()'を使用している場合は、 –
私は実現しました。なぜ私は私のコメントを更新したのですか? – Acewin