Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何获得分组行的标准偏差?_Php_Mysql - Fatal编程技术网

Php 如何获得分组行的标准偏差?

Php 如何获得分组行的标准偏差?,php,mysql,Php,Mysql,我想计算我的网站页面浏览量之间的标准偏差。我希望使用纯MySQL来实现这一点,而无需向Web服务器查询整个表,并向PHP代码返回一个数字以供进一步使用。根据以下架构,每个页面视图存储为访客id-页面id-访客计数三元组: +============+=========+=============+ | visitor_id | page_id | visit_count | +============+=========+=============+ | 1 | 2

我想计算我的网站页面浏览量之间的标准偏差。我希望使用纯MySQL来实现这一点,而无需向Web服务器查询整个表,并向PHP代码返回一个数字以供进一步使用。根据以下架构,每个页面视图存储为
访客id
-
页面id
-
访客计数
三元组:

 +============+=========+=============+
 | visitor_id | page_id | visit_count |
 +============+=========+=============+
 | 1          | 2       | 7           |
 +------------+---------+-------------+
 | 2          | 2       | 4           |
 +------------+---------+-------------+
 | 1          | 1       | 17          |
 +------------+---------+-------------+
 | 3          | 2       | 12          |
 +------------+---------+-------------+
 | 1          | 3       | 639478      |
 +------------+---------+-------------+
 | 2          | 1       | 6           |
 +------------+---------+-------------+
page\u id
指的是pages表中的主键,
visitor\u id
指的是visitors表中的主键。上表的主键是
visitor\u id
-
page\u id
对,因为同一访问者看到的同一页面是通过增加相应行的
visitor\u count
来记录的,而不是创建一个新的

在计算标准偏差之前,应按照
page\u id
将条目分组在一起,它们的
vision\u count
相加(此处可以忽略visitor\u id),因此,我想有效地计算以下各项的偏差:

 +=========+=============+
 | page_id | visit_count |
 +=========+=============+
 | 2       | 23          |
 +---------+-------------+
 | 1       | 23          |
 +---------+-------------+
 | 3       | 639478      |
 +---------+-------------+

我知道可能的PHP解决方案,但我对MySQL感兴趣。

您可以创建一个新表来存储时间戳+当前视图,以便查看视图中更改的历史记录。您将能够检查最后两个时间戳条目,以及它们之间的差异有多大,以及您甚至还没有想到的一大堆其他内容。像图形一样。或饼图,显示每周和每天的活动增加。Mmmm饼。

如果您想要每个页面的标准偏差(即,访问者是总体):


如果您需要页面上的标准偏差:

select std(visit_count) as page_std
from (select page_id, sum(visit_count) as visit_count
      from table1
      group by page_id
     ) t;

谢谢你的快速回复。我指的是标准差,如数理统计中的标准差(离散度或平均值的变化)。“标准差”是很好理解的。但是什么呢?按总计数还是按访客计数?示例数据和所需结果非常有用。我感谢您的回答,但这已经完成,尽管方式大不相同。我感谢您的回答,子查询的特征正是我想要的。如果您对如何使问题更清晰以供将来参考有任何建议,请毫不犹豫地编辑。
select std(visit_count) as page_std
from (select page_id, sum(visit_count) as visit_count
      from table1
      group by page_id
     ) t;