Я создаю запрос MySQL, чтобы определить, сколько элементов из каждой из нескольких категорий отображается в заданном диапазоне дат. Моя первая попытка выглядела так:Подзапросы refactor с использованием GROUP BY/HAVING?
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 или есть другой способ, которым я не хватает?
Edit: Пример набора результата - что-то вроде этого:
Title | Category 1 Total | Category 2 Total | Unknown Category Total
ABC 1 3 0
DEF 2 7 2
Можете ли вы предоставить пример результирующего? –
Вы делаете сводный запрос. – Loki