[英]Count with group by multiple column
我需要查找网站的统计信息,我想知道一天中有多少独特的视图以及来自哪个国家/地区。
我就是这样
我需要从两列ip
和tier
中获取计数
列ip
具有访问者ip。
对于tier1,tier2,tier3,tier4,tier5 countries
列tier
值分别为int 1,2,3,4,5
。
我需要获取唯一IP的计数,然后获取各个层的计数
$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;
";
这给我输出为
mysqli_result Object ( [current_field] => 0 [field_count] => 1 [lengths] => [num_rows] => 1411 [type] => 0 )
我从中得到了唯一的计数,我也需要获得层计数。
也有这个方法
//adding in main query to get tiers counts
COUNT(DISTINCT CASE WHEN `tier` = '1' THEN `ip` END) `tier1`
但这很慢,如果可能,我想按组进行。
请提出任何可行的方法。
谢谢
这将为您提供各层的唯一IP数量
SELECT tier, COUNT(ip) AS IP_COUNT FROM
(SELECT DISTINCT tier, ip
FROM stats
WHERE <your conditions>) A
GROUP BY tier
ip的总数将为所有IP_COUNT的总数
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.