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