Я строю запрос MySQL, чтобы определить, сколько элементов из каждой из нескольких категорий появятся в заданном диапазоне дат. Моя первая попытка выглядела так:
select Title,
(select count(*) from entries where CategoryID=1
and Date >= @StartDate and Date <= @EndDate) as Cat1,
(select count(*) from entries where CategoryID=2
and Date >= @StartDate and Date <= @EndDate) as Cat2,
(select count(*) from entries where CategoryID is null
and Date >= @StartDate and Date <= @EndDate) as UnkownCategory
from entries
where Date >= @StartDate and Date <= @EndDate
Таблица довольно большая, и я хотел бы реорганизовать запрос, чтобы ускорить его, но я не уверен, каким образом - это можно переписать с помощью операторов GROUP BY / HAVING или есть другой способ, который я пропускаю?
Редактировать : пример набора результатов - примерно так:
Title | Category 1 Total | Category 2 Total | Unknown Category Total
ABC 1 3 0
DEF 2 7 2