按多列计数

时间:2016-03-05 10:51:24

标签: php mysql

我需要找到我的网站的流氓,我想知道一天中有多少独特的观点以及来自哪个国家/地区。

我这样做。

有两列iptier,我需要从中获取点数

ip有访问者IP。

tier的值分别为1,2,3,4,5的{​​{1}}。

我需要获取唯一ip的计数,然后获得各自的层数

tier1,tier2,tier3,tier4,tier5 countries

这给我输出

$date1 = "4-3-2016 00:00:00";
$date2 = "5-3-2016 00:00:00";
$today = strtotime("midnight", strtotime($date1));
$nextday = strtotime("midnight", strtotime($date2));
$query="
SELECT 
COUNT(*) AS `unique`
FROM `stats` 
WHERE (`date`>='$today' AND `date`<'$nextday')  
GROUP BY `ip`, `tier` ORDER BY `tier` DESC;
";

我从中获得了独特的数量,我需要得到层数。

还有这个approch

mysqli_result Object ( [current_field] => 0 [field_count] => 1 [lengths] => [num_rows] => 1411 [type] => 0 ) 

但这很慢,我想按组进行,如果可能的话。

请建议任何可行的方法。

由于

1 个答案:

答案 0 :(得分:0)

这将为您提供与等级

相对应的唯一ips的数量
SELECT tier, COUNT(ip) AS IP_COUNT FROM
(SELECT DISTINCT tier, ip 
FROM stats
WHERE <your conditions>) A
GROUP BY tier

ips的总数将是所有IP_COUNT的总和