2013-12-16 6 views
1

Я хочу, чтобы иметь возможность ОТЧИТАТЬ IP-адреса в день, а затем СЧИТАТЬ их все вместе.DISTINCT COUNT за день sql

В основном в понедельник я получаю 3 разных IP-адреса и из них 3, два из них дважды посещали страницу, поэтому у меня есть в общей сложности 5 записей. Во вторник я получаю 1 IP-адрес, который был с понедельника, и 2 новых отдельных IP-адреса. Я хочу, чтобы иметь возможность подсчитывать 3 разных IP-адреса в течение понедельника и 3 разных IP-адреса во вторник и добавлять их вместе в общей сложности 6 записей. Вот мой код:

SELECT *, COUNT(DISTINCT track.ip) AS tracks 
FROM user, track 
WHERE track.user_id = $user_id 
GROUP BY $user_id 
ORDER BY tracks 
LIMIT 1 

Как я могу использовать COUNT my DISTINCT ips?

+1

Почему '' user_id' является переменной в 'GROUP BY' ?? Это опечатка? –

ответ

2

Это вы что искали?

select sum(NumIpsPerDay) 
from (select date(TheDayCol) as d, count(distinct t.ip) as NumIpsPerDay 
     from track t 
     group by date(TheDayCol) 
    ) t; 

Это вычисляет количество отдельных IP-адресов в каждый день, а затем вычисляет сумму.

+0

Это будет работать только тогда, когда TheDayCol одинаково для всех строк с тем же днем. Если у вас есть дата-время для даты, вам нужно будет вытащить или усечь дату таким образом, чтобы ее можно было сгруппировать. – davidgarrison

+0

@ dagarrison. , , В MySQL функция 'date()' усекает время даты до даты. –