У меня проблема с программой, которую я пытаюсь закончить. У меня есть таблица, в которой хранятся три метки времени. Он используется для составления статистики запросов и ответов. Первая временная метка относится к дате и времени запроса (Date_Sent), два других - первый раз, когда один из наших экспертов отвечает на запрос (FirstResponse) и когда этот запрос выполняется (LastResponse). Я должен создать график на основе следующих критериев:Несколько вычисленных значений в одном операторе SQL
- Общее количество запросов в месяц
- Количество запросов ответили менее чем за два часа
- Количество запросов откликнулись менее чем за 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, так что я не уверен, если это выполнимо или нет.
Как вы определяете «отреагировали»: время между последним ответом и первым ответом или между датой и первым ответом? –
Любая причина, по которой вы пытаетесь сделать все это в SQL? Можете ли вы отменить набор записей и фрагмент/кости с кодом? – David
@StasYarkin Спасибо за ответ :) Время ответа между датой и первым ответом :) В принципе, я вычисляю, как быстро наши специалисты отвечают на отдельные запросы. – Poch