У меня проблема с программой, которую я пытаюсь завершить. У меня есть таблица, в которой хранятся три отметки времени. Он используется для составления статистики запросов и ответов. Первая метка времени предназначена для даты и времени запроса (Date_Sent), две другие - это первый раз, когда один из наших экспертов отвечает на запрос (FirstResponse) и когда этот запрос был удовлетворен (LastResponse). Я должен создать график на основе следующих критериев:
- Общее количество запросов в месяц
- Количество запросов, на которые ответили менее чем за два часа.
- Количество запросов, на которые ответили менее 24 часов, но более двух
- Количество запросов, на которые ответили менее 48 часов, но более 24
- Количество запросов, на которые ответили менее 72 часов, но более 48
- Количество запросов, на которые ответили менее 96 часов, но более 72
Я могу выполнить первое требование:
SELECT Count(Date_Sent) AS TotalQueries,
SUBSTRING(CONVERT(VARCHAR(11), Date_Sent, 113), 4, 8) AS Month,
RIGHT(CONVERT(VARCHAR(7), Date_Sent, 120), 2) AS Month_Order
FROM AskAO.dbo.AskAO_Stats
WHERE Date_Sent BETWEEN '6/1/2012' AND '6/30/2013' AND
FirstResponse != '' AND
LastResponse != '' AND
FirstResponse < LastResponse
GROUP BY SUBSTRING(CONVERT(VARCHAR(11), Date_Sent, 113), 4, 8),
CONVERT(VARCHAR(7), Date_Sent, 120)
ORDER BY SUBSTRING(CONVERT(VARCHAR(11), Date_Sent, 113), 4, 8)
Я могу получить этот образец результата:
TotalQueries Month Month_Order
655 Jun 2013 06
289 May 2013 05
Однако я не знаю, как получить другие :( Я знаю, что могу вычислить значения с помощью DateDiff, но мне понадобится количество запросов, соответствующих этим конкретным критериям, в месяц. Мне понадобится это:
TotalQueries 2Hrs 24Hrs 48Hrs 72Hrs 96Hrs Month Month_Order
655 300 190 80 55 30 Jun 2013 06
289 180 50 30 15 14 May 2013 05
Я не знаком со сложным SQL, поэтому не уверен, выполнимо это или нет.