как делать двойную группировку ?

kibi

Новичок
как делать двойную группировку ?

Прошу помочь определиться с логикой..

База содержит даты в формате (‘yyyy-mm-dd’, ‘hh:mm:ss’,’ IP-adress’)

Необходимо сделать выборку по месяцам с группировкой по IP-adr.

Если я делаю просто

Select * count(*) as sumIP from base group by IP-adr
то получаю группировку по адресам…
но чтобы еще сделать группировку по месяцам?

Делать виртуальные таблицы и потом вторым запросом группировать по датам ?
 

Кром

Новичок
В таком запросе нет никакой логики. Если ты сделаешь группировку по месяцам, то затрешь данные по IP адресам.
Так что определись для начала, что тебе надо.
 

kibi

Новичок
Originally posted by Кром
В таком запросе нет никакой логики. Если ты сделаешь группировку по месяцам, то затрешь данные по IP адресам.
Так что определись для начала, что тебе надо.
Логика такая, что надо сделать двойную выборку, т.е.
1. Разбить по месяцам...
2. В каждом месяце разбить по IP-адресам..

не получится одним запросом..?
не могу придумать.
 

Кром

Новичок
Понятно. Запрос будет выглядеть так:

по дням:
select distinct `Time`,`Ip`, count(*) AS UniqIp from `Table` group by 'Time', `Ip`

по месяцам:
select distinct date_format(`Time`,'%Y-%m') as `GroupMonths`,`Ip`, count(*) AS UniqIp from `Table` group by `GroupMonths`, `Ip`
 
Сверху