Есть таблица вида: id, user_id, time в ней записывается какой юзер когда залогинился, один юзер за день мог логиниться несколько раз. мне нужно получить записи за последний месяц с количеством уникальных логинов. использовал запрос SELECT count(*) as count, time FROM `login_history` GROUP BY day(time), month(time), year(time) ORDER by time desc LIMIT 30 но тут получаются не уникальные логины. как добавить дополнительную группировку по user_id чтобы на выводе получить результат: количество логинов, дата ?
Для получения числа логинов каждого пользователя за последний месяц нужно 1) добавить группировку по полю user_id GROUP BY user_id , .... 2) добавить условие where time > текущее время минус 1 месяц 3) убрать LIMIT 30
тогда почему-то нет группировки по дню, месяцу и году SELECT count(*) as count, time, user_id FROM `login_history` GROUP BY day(time), month(time), year(time), user_id ORDER by time desc
1) нужно изменить порядок группировки GROUP BY user_id, year(time), month(time), day(time) 2) группировка не по полю time. Поэтому time нельзя и бессмысленно использовать в SELECT SELECT count(*) as count, user_id, year(time), month(time), day(time) 3) тип поля time какой?
изменил порядок - тоже самое, тип поля timestamp, только по дате группируется нормально, а вот c user_id как на скриншоте выше
Код (PHP): SELECT count(*) as count, user_id, year(time), month(time), day(time) FROM `login_history` GROUP BY user_id, year(time), month(time), day(time) Этот запрос получает количество записей/логинов в таблице `login_history` относящихся к каждому пользователю по дням Если же нужно получить количество логинов по дням без привязки к пользователям, то группировка по user_id не нужна: Код (PHP): SELECT count(*) as count, year(time), month(time), day(time) FROM `login_history` GROUP BY year(time), month(time), day(time) Добавлено спустя 39 минут 31 секунду: если же нужно получить количество пользователей залогинившихся за день то запрос такой: Код (PHP): SELECT count(distinct(user_id)) as count, year(time), month(time), day(time) FROM `login_history` GROUP BY year(time), month(time), day(time) PHP, JavaScript, SQL и другой код пишите внутри тегов Код ( (Unknown Language)): [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]