php - 如何计算mysql DB中 "equal or better"的百分比?

标签 php mysql

想出这个问题的标题很难,但下面的问题对我来说更难。我希望任何人都可以提供帮助。

我有一个简单的 MySQL 数据库表。该表充满了包含 ID 和周访问者数量的记录。拥有2年约200+个网站的记录。

总而言之,我想知道两件事:

1.) - “2009 年第 54 周网站 somethingonline.com 有 300 名访问者”(当然容易。我可以做到)

2.) - “网站 sometingonline.com 是该周得分最高的 8% 网站之一。”

现在,我怎样才能得到 2 号???当然,我想知道每周在所有网站中所占的百分比,因此我得到如下列表:

  1. sometingonline1.com - 300 位访问者 - 8% 的网站得分达到或高于此水平
  2. sometingonline2.com - 400 位访问者 - 4% 的网站得分为这样或更高
  3. sometingonline3.com - 500 位访问者 - 2% 的网站得分达到或超过此水平
  4. sometingonline4.com - 600 位访问者 - 1% 的网站得分达到或高于此水平

我怎样才能得到这些结果?这在一次查询中可能吗?

我使用 MySQL 和 PHP。

最佳答案

关键是涉及到您的 visits 的两个不同“副本” table 。在这个查询中 v1代表您实际浏览的网站。对于每一个 v1网站,我们将加入 visits 的副本表,匹配同一周内访问次数较多的网站的任何行。

SELECT v1.website_name, v1.visits, COUNT(v2.id)
FROM visits AS v1
INNER JOIN visits AS v2 ON (v1.week_number = v2.week_number AND v2.visits > v1.visits AND v2.id != v1.id)
WHERE week_number = 54

这会告诉您访问者较多的网站的数量。要以百分比的形式获取该值,请运行单独的查询以简单计算该周内有任何 访问的网站总数。然后,在您的 PHP 脚本中,您可以进行简单的除法以获得所需的百分比。

关于php - 如何计算mysql DB中 "equal or better"的百分比?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4009071/

相关文章:

php - 为什么有人想使用 strlen 而不是 mb_strlen

PHP 比较非公元日期

php - Yii,CactiveForm 在数据库中保存多个表

mysql - 选择主键

php - 箭头事件链接

php - Laravel 中间件格式化响应数组的键

sql - 从 ini.bak 文件中检索表和表数据

Mysql按反向计数分组

java - 当我使用 Hibernate Config 进行反向工程时出现此错误 : -"java.sql.SQLException: No suitable driver found for".。我的数据库

php - 使用旧的 mysql_* API 检查一行是否存在