Альтернатива группировке при использовании подзапросов (MySQL)? - PullRequest
0 голосов
/ 07 ноября 2011

Я пытаюсь создать относительно сложный запрос MySQL для генерации гистограммы с накоплением - количество запросов по месяцам по отделам.

Подход, который я пытался использовать, заключается в использовании подзапроса, но, похоже, это тупик, поскольку группировка по месяцам не применяется в подзапросе. Он повторяет одно и то же общее количество для каждой возвращенной строки, например,

MONTH     HR    ACCT  CUST SVC
October   5     1     5
November  5     1     5
December  5     1     5

Вот запрос, который я использую:

SELECT 
MONTH(request.submissiondate), YEAR(request.submissiondate),
(SELECT count(*) from request where request.DEPARTMENTID='1') as 'Human Resources',
(SELECT count(*) from request where request.DEPARTMENTID='2') as 'Accounting',
(SELECT count(*) from request where request.DEPARTMENTID='3') as 'Customer Service'

FROM request 
WHERE YEAR(request.submissiondate) = 2011
group by MONTH(request.submissiondate), YEAR(request.submissiondate)

Надеюсь, что есть относительно простой альтернативный подход, который мне просто не хватает.

Заранее спасибо за помощь!

1 Ответ

1 голос
/ 07 ноября 2011

Может быть, что-то подобное будет работать?

SELECT 
MONTH(request.submissiondate), YEAR(request.submissiondate), request.DEPARTMENTID, COUNT(*) as 'total'
FROM request 
WHERE YEAR(request.submissiondate) = 2011
group by MONTH(request.submissiondate), YEAR(request.submissiondate), request.DEPARTMENTID
ORDER BY request.submissiondate 

Я не знаю, возможно ли получить точно такой же вывод, как вы перечислили выше, но вы должны быть в состоянии циклически перебирать возвращенные строки и переставлять вывод с любым языком на стороне сервера, который вы используете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...