У меня есть две таблицы:
deskcases
:| CaseID | Resolved At(Date) | Labels |
ringcentral
:| Date | Type | Action Result |
Моя цель - получить следующий результат за предыдущие 7 дней:
| Date | Count of TotalResolvedCases | Count of Total Calls |
Мне нужно подсчитать случаи и звонки в двух отдельных таблицах, затем объединить и сгруппировать подсчеты по дате. Я также имею дело с разным форматированием дат в двух таблицах, отсюда и дурацкие функции группировки и объединения.
Мне также нужно, чтобы объединение включало все даты за предыдущие 7 дней (у deskcases
есть все даты, поэтому я подумал, что здесь должно работать ВНУТРЕННЕЕ СОЕДИНЕНИЕ?)
Чтобы закрыть, я попытался запустить следующий запрос ниже, и он просто сбивается безрезультатно через минуту или две. Любая идея о том, как заставить это работать? Заранее спасибо за вашу помощь! :-)
(запуск 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