繁体   English   中英

按多列分组计数

[英]Count with group by multiple column

我需要查找网站的统计信息,我想知道一天中有多少独特的视图以及来自哪个国家/地区。

我就是这样

我需要从两列iptier中获取计数

ip具有访问者ip。

对于tier1,tier2,tier3,tier4,tier5 countriestier值分别为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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM