2011-03-09 5 views
2

Я пытаюсь подсчитать общее количество уникальных IP-адресов с использованием MySQL, это то, что у меня есть для моего запроса:Подсчет уникальных IP-адресов с MySQL

SELECT COUNT(`id`) as `count` FROM `pageviews` WHERE `timestamp` BETWEEN '1299675600' AND '1299762000' GROUP BY `client_ip` 

Единственная проблема у меня есть, это рассчитывает результаты, сделанные этим IP-адресом, есть способ в MySQL, чтобы считать только количество партий IP-адресов, считая их однозначно, а не группируя их, а затем подсчитывая их.

Cheers.

+1

Вы пробовали с 'Select DISTINCT' – allenskd

ответ

4

Вы можете использовать COUNT(DISTINCT ...), чтобы подсчитать количество уникальных IP-адресов. Я не совсем уверен, что ваш вопрос, но вы могли бы попробовать это, или адаптировать его в соответствии с вашими потребностями:

SELECT COUNT(DISTINCT client_ip) as `count` 
FROM `pageviews` 
WHERE `timestamp` BETWEEN '1299675600' AND '1299762000' 
+0

Первый комментарий, лучший ответ. Ура! –

0

Следующая следует сделать трюк:

SELECT COUNT(DISTINCT `client_ip`) as `count` FROM `pageviews` WHERE `timestamp` BETWEEN '1299675600' AND '1299762000' 

Там нет необходимости группе по client_ip, поскольку вы уже можете запросить различные значения с помощью ключевого слова DISTINCT.

1

насчет:

select count(distinct client_ip) as total_num 
from pageviews 
where `timestamp` BETWEEN '1299675600' AND '1299762000' 

Там вы будете подсчитывать количество distinct IP-адреса - которые должны быть то, что вы хотите; и больше нет необходимости в предложении group by.

0

Вы можете использовать DISTINCT в COUNT():

SELECT COUNT(DISTINCT client_ip) as `count` 
FROM `pageviews` WHERE `timestamp` BETWEEN '1299675600' AND '1299762000' 
Смежные вопросы