私は2つのテーブルを持っています:
deskcases
:| CaseID | Resolved At(Date) | Labels |
ringcentral
:| Date | Type | Action Result |
私の目標は、過去7日間に次の出力を取得することです。
| Date | Count of TotalResolvedCases | Count of Total Calls |
2つの別々のテーブルでケースと呼び出しをカウントしてから、カウントを結合して日付でグループ化する必要があります。また、2つのテーブルで異なる日付形式を扱っているため、奇抜なgroupby関数とjoin関数を使用しています。
また、過去7日間のすべての日付を参加に含める必要があります(deskcases
すべての日付があるので、INNER JOINはここで機能するはずです)
最後に、以下のクエリを実行しようとしましたが、1、2分経っても結果が得られずにチャーンします。これを機能させる方法について何かアイデアはありますか?よろしくお願いします!:-)
(MySQL 5.0.96の実行)
SELECT
DATE_FORMAT(
deskcases.`Resolved At`,
'%Y-%m-%d'
)AS Date1,
(
SELECT
COUNT(deskcases.`Case #`)
FROM
deskcases
WHERE
deskcases.Labels NOT LIKE '%SPAM%'
AND deskcases.Labels NOT LIKE '%Online Orders%'
AND deskcases.Labels NOT LIKE '%Internal SPAM%'
AND deskcases.`Resolved At` > NOW()- INTERVAL 8 DAY
)AS TotalResolvedCases,
(
SELECT
COUNT(ringcentral.Counter)
FROM
ringcentral
WHERE
`ringcentral`.`Type` = 'Voice'
AND `Action Result` = 'Accepted'
AND ringcentral.`Date` > NOW()- INTERVAL 8 DAY
)AS TotalCalls
FROM
deskcases
INNER JOIN ringcentral ON DATE_FORMAT(
deskcases.`Resolved At`,
'%Y-%m-%d'
)= ringcentral.Date
GROUP BY
Date1
ORDER BY
Date1 ASC
編集
これを少し編集して結果を出すことができましたが、すべてのケースとサブセレクトクエリを使用した呼び出しをカウントしているようで、合計は日付でグループ化されていません。コードは次のとおりです。
SELECT
DATE_FORMAT(
deskcases.`Resolved At`,
'%Y-%m-%d'
)AS Date1,
(
SELECT
COUNT(deskcases.`Case #`)
FROM
deskcases
WHERE
deskcases.Labels NOT LIKE '%SPAM%'
AND deskcases.Labels NOT LIKE '%Online Orders%'
AND deskcases.`Case Status` LIKE '%Resolved%'
)AS TotalResolvedCases,
(
SELECT
COUNT(ringcentral.Counter)
FROM
ringcentral
WHERE
`ringcentral`.`Type` = 'Voice'
AND `Action Result` = 'Accepted'
)AS TotalCalls
FROM
deskcases
LEFT OUTER JOIN ringcentral ON DATE_FORMAT(
deskcases.`Resolved At`,
'%Y-%m-%d'
)= ringcentral.Date
WHERE deskcases.`Resolved At` > NOW()- INTERVAL 8 DAY
GROUP BY
Date1
ORDER BY
Date1 ASC