У меня есть таблица с колонками
TicketID - ID of the ticket
AssignedTo - UserID of person to whom ticket is assigned
CreatedTime - Time when Ticket is received
HandleTime - Time when Ticket is picked up for handling
FinishTime - Time when Ticket is finished handling
Мне нужно получить следующие данные, сгруппированные по отдельному идентификатору AssignedTo:
Я выдвинул начальный запрос как
SELECT
User,
sum(case when PickupTime <=1 then 1 else 0 end) as range1,
sum(case when PickupTime <=2 then 1 else 0 end) as range2,
...
FROM
(SELECT
((HandleTime - CreatedTime)/60000) as PickupTime,
((FinishTime - CreatedTime)/60000) as CompletedTime,
AssignedTo as User
FROM
TicketTable
)T
GROUP BY
User
Здесь я могу получить только подсчеты диапазона срабатывания. Мне все еще нужны проценты диапазона срабатывания, а также подсчеты диапазона закрытия и проценты. Как их получить?
EDIT:
Давайте рассмотрим примерный набор данных и только два диапазона <= 1 и> 1, а также будем считать время как минуты здесь, тогда как в исходной таблице оно хранится как метка времени.
TicketID | AssignedTo | CreatedTime | HandleTime | FinishTime
1 001 2 3 3
2 001 4 6 8
3 002 1 2 3
В приведенной выше таблице пользователю 001 назначено всего 2 билета, а пользователю 002 назначено всего 1 билет.
PickupTime и CompletedTime для билетов
TicketID | PickupTime | CompletedTime
1 1 1
2 2 4
3 1 2
Таким образом, для Пользователя-001 из двух назначенных ему билетов он выбрал 1 билет в диапазоне 1 минуты и 1 в диапазоне более 1 минуты. Таким образом, процент билетов в диапазоне 1 минуты составляет 50% и более 1 минуты. для него 50%. То же самое относится и к CompletedTime, а также к User-002.
Итак, конечный результат, чего я хочу, это.
AssignedTo | Pickup_range1_count | Pickup_range2_count | Pickup_range1_percentage |
001 1 1 0.5
002 1 0 1
Pickup_range2_percentage | Complete_range1_count | Complete_range2_count |
0.5 1 1
0 0 1
Complete_range1_percentage | Complete_range2_percentage
0.5 0.5
0 1