Один из моих коллег работает над SQL-запросом. После нескольких присоединений (рабочих к учетным записям) у нее появляется такая информация:
Worker Account Date Task_completed
Bob Smith 12345 01/01/2010 Received
Bob Smith 12345 01/01/2010 Received
Bob Smith 12345 01/01/2010 Processed
Sue Jones 23456 01/01/2010 Received
...
В конечном итоге она хочет что-то вроде этого - для каждой даты, для каждой учетной записи, сколько задач выполнил каждый работник для этой учетной записи?
Worker Account Date Received_count Processed_count
Bob Smith 12345 01/01/2010 2 1
... и есть еще несколько статусов для подсчета.
Получить один из этих подсчетов довольно просто:
SELECT
COUNT(Task_completed)
FROM
(the subselect)
WHERE
Task_completed = 'Received'
GROUP BY
worker, account, date
Но я не уверен, что лучший способ получить их всех. По сути, мы хотим, чтобы несколько COUNT
s использовали разные GROUP BY
s . Лучшее, что я могу выяснить, - это скопировать и вставить подзапрос несколько раз, изменить WHERE
на «Обработано» и т. Д. И объединить все эти элементы вместе, выбирая только количество из каждого.
Есть ли более очевидный способ сделать это?