Короче у меня 2 таблицы:
ПОЛЬЗОВАТЕЛИ:
------------------------
UserID | Name
------------------------
0 a
1 b
2 c
CALLS:
------------------------
ToUser | Result
------------------------
0 ANSWERED
1 ENGAGED
1 ANSWERED
0 ANSWERED
и т. Д. (Я использую числовую ссылку для результата в реальности)
У меня более 2 миллионов записей, каждая из которых подробно описывает звонок конкретному клиенту. В настоящее время я использую операторы Case для подсчета каждого восстановления определенного результата ПОСЛЕ того, как я уже сделал быстрый общий подсчет:
COUNT(DISTINCT l_call_log.line_id),
COALESCE (SUM(CASE WHEN l_call_log.line_result = 1 THEN 1 ELSE NULL END), 0) AS [Answered],
COALESCE (SUM(CASE WHEN l_call_log.line_result = 2 THEN 1 ELSE NULL END), 0) AS [Engaged],
COALESCE (SUM(CASE WHEN l_call_log.line_result = 4 THEN 1 ELSE NULL END), 0) AS [Unanswered]
Проводлю ли я 3 сканирования данных после общего начального подсчета? если это так, есть ли способ, которым я могу сделать одну проверку и подсчитать количество вызовов за результат за один раз?
Спасибо.