具有平均和不同条件的多个MySQL组

时间:2018-02-06 01:50:27

标签: mysql group-by distinct average

我正在尝试在单个MySQLi语句中组合多个条件,该语句应该从访问者日志数据库中计算每月的平均访问者数量,该数据库将每个IP地址记录到服务器上每个网站的每个页面。

这有点困难,因为它需要使用DISTINCT函数来分隔记录访问同一网站的不同页面的多个IP地址,而不是将其计为2个或更多个人访问者。

以下是数据库表的屏幕截图: enter image description here

我尝试过以下脚本,但似乎没有输出?

$getAVERVISITORS = mysqli_fetch_assoc(mysqli_query($conn, "SELECT AVG(count(distinct ip_address)) as average_monthly_visitors FROM all_website_stats WHERE website_ref = '$account_ref' GROUP BY MONTH(date_last_viewed)"));

 $getAVERVISITORS = $getAVERVISITORS['average_monthly_visitors'];

结果需要在date_last_viewed内按月分组,以显示每月平均访问特定website_ref的不同IP地址数量?

我希望这足以让有人解释我可能会出错的地方?

1 个答案:

答案 0 :(得分:0)

你基本上拥有它,除了你不能在同一行中做avg()。你需要做一个子查询然后平均结果。这样的事情应该有效:

SELECT AVG(counter) AS average_monthly_visitors from (SELECT count(distinct(ip_address)) as counter FROM all_website_stats WHERE website_ref = '$account_ref' GROUP BY MONTH(date_last_viewed)) Temp;