我想计算网站上的网页浏览量之间的标准差。我想使用纯MySQL执行此操作 - 无需将整个表查询到Web服务器 - 并将单个数字返回到PHP代码以供进一步使用。根据以下架构,每个页面视图都存储为visitor_id
- page_id
- visit_count
三人组合:
+============+=========+=============+
| 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_id
引用pages表中的PRIMARY_KEY,visitor_id
引用visitor表中的PRIMARY_KEY。上表的主键是visitor_id
- page_id
对,因为相同访问者看到的同一页面是通过增加相应行的visit_count
来记录的,而不是创造一个新的。
在计算标准偏差之前,条目应按page_id
分组,它们的visit_count
求和(此处可以忽略visitor_id),因此,实际上,我想计算以下偏差:
+=========+=============+
| page_id | visit_count |
+=========+=============+
| 2 | 23 |
+---------+-------------+
| 1 | 23 |
+---------+-------------+
| 3 | 639478 |
+---------+-------------+
我了解可能的PHP解决方案,但我对 MySQL 感兴趣。
答案 0 :(得分:1)
如果您想要每页的标准偏差(即访客是人口):
select page_id, sum(visit_count) as visit_count, std(visit_count) as visit_std
from table1
group by page_id;
如果您想要页面上的标准偏差:
select std(visit_count) as page_std
from (select page_id, sum(visit_count) as visit_count
from table1
group by page_id
) t;
答案 1 :(得分:0)
您可以创建一个存储时间戳+当前视图的新表,以便查看视图中的更改历史记录。您可以查看最后两个带时间戳的条目,以及两者之间的差异以及您还未想到的其他一些东西。像图表一样。或者饼图显示活动每周增加。嗯馅饼。