У меня есть таблица user_details, в которую добавляется каждый логин. Я разрабатываю страницу для просмотра учетных записей, таких как> 1 и> 10 и т. Д. c для каждого идентификатора и за каждый месяц, тянущийся за предыдущие 12 месяцев.
Ниже был мой запрос, чтобы получить счет за последние 30 дней:
SELECT count(*) FROM ( select intClientId from tbl_pi_userdetails where LoginTime >= NOW() - INTERVAL 30 DAY group by intClientId HAVING COUNT(intClientId) = 1)tbl_pi_userdetails
Точно так же хотите, чтобы он длился 14 месяцев.
select
date_format(date_sub(now(), interval months_ago month), "%b %Y") as month,
count(intClientId) as count
from(
select
months_ago,
date(date_format(date_sub(now(), interval months_ago month),
"%Y-%m-01")) start_date,
date(date_format(date_sub(now(), interval months_ago-1 month),
"%Y-%m-01")) end_date
from (select 0 months_ago union select 1 union select 2 union select
3 union select 4 union select 5 union select 6 union select 7 union
select 8 union select 9 union select 10 union select 11 union select
12 union select 13 order by months_ago) months_ago
) date_range left join tbl_pi_userdetails on LoginTime >= start_date and
LoginTime < end_date and
LoginTime <= now() group by intClientId, months_ago,
intClientId having count(intClientId) = 1;
Моя таблица выглядит так с разными идентификаторами и временем входа в систему.
Ожидаемые результаты: