2017-01-31 6 views
-2

私はチャートで使用するレポートを生成しようとしていますが、私は多くの異なるステートメントを試しましたが、これは動作しません。複数選択、カウント、およびMYSQLのステートメント

基本的には、私のデータベースに記録のレコードを表示し、日付別にグループ化し、正確な画像を表示できるようにしたいと考えています。

| Date  | Answered Calls | Missed Calls | Total Calls | 
| 1-1-2016 | 10    | 2   | 12 
| 2-1-2016 | 15    | 1   | 16 

などなど

すなわち

しかし、(これは、合計カウントコールは含まれません)以下のステートメントを使用して、私は次のことを得続ける -

SELECT (SELECT DATE(`created`) 
     FROM mp_wp_call_report_pstn 
     ) AS created_date, 

     (SELECT `Extension` 
     FROM mp_wp_call_report_pstn 
     ) AS Extension, 

     (SELECT COUNT(*) 
     FROM mp_wp_call_report_pstn 
     WHERE `Call type` = "Incoming" 
       AND `Extension` != 2504 
       AND `created` >= DATE_SUB(CURDATE(),INTERVAL 1 MONTH) 
     ) AS CallsAnswered, 

     (SELECT COUNT(*) 
     FROM mp_wp_call_report_pstn 
     WHERE `Call type` = "Incoming" 
     AND `Extension` = 2504 
     AND `created` >= DATE_SUB(CURDATE(),INTERVAL 1 MONTH) 
     ) AS CallsRecieved 

GROUP BY DATE(`created_date`) 
LIMIT 0, 25 

MySQLは言った:ドキュメント - #1064 - あなたはあなたのSQL構文でエラーがあります。不在着信を取得するために、ライン22

で「 DATE(created_date)LIMIT 0、25、GROUP BY」近くを使用する権利構文についてはMySQLサーバのバージョンに対応するマニュアルを確認し、私たちは離れて答えとります受け取ったから。

アドバイスをいただければ幸いです。

+3

あなたのFROM句はどこですか? – McNets

+0

この場合、クエリーを最小限に抑えて機能させるようにしてください。次に、エラーが見つかるまでフィールドの追加を開始します。しかし、ここではFROMが必要です –

答えて

0

あなたは、単に日付と拡張子によって異なる通話やグループを数え、すべてこのサブクエリは必要ありません。

SELECT DATE(`created`) AS created_date, 
     `Extension`, 
     SUM(CASE WHEN `Call type` = "Incoming" 
        AND `Extension` != 2504 
        AND `created` >= DATE_SUB(CURDATE(),INTERVAL 1 MONTH) 
      THEN 1 ELSE 0 END) AS CallsAnswered, 
     SUM(CASE WHEN `Call type` = "Incoming" 
        AND `Extension` = 2504 
        AND `created` >= DATE_SUB(CURDATE(),INTERVAL 1 MONTH) 
      THEN 1 ELSE 0 END) AS CallsRecieved 
FROM mp_wp_call_report_pstn 
GROUP BY DATE(`created`), `Extension` 
LIMIT 0, 25; 
0

必要なものはすべて1つのテーブルにあります。サブクエリを使用すべきではありません。

date曜日とcall_type条件をwhere句に入力し、電話の日付順にグループ化します。

このような何かが正しい軌道に乗ってあなたを置く必要があります。

select DATE(`created`) as created_date, 
    sum((case when (`Extension` != 2504) then 1 else 0 end)) AS CallsAnswered, 
    sum((case when (`Extension` = 2504) then 1 else 0 end)) AS CallsReceived, 
    count(*) as total_calls 
from mp_wp_call_report_pstn 
where `created` >= DATE_SUB(CURDATE(),INTERVAL 1 MONTH) 
    and `Call type` = "Incoming" 
group by created_date 
関連する問題