想出这个问题的标题很难,但下面的问题对我来说更难。我希望任何人都可以提供帮助。
我有一个简单的 MySQL 数据库表。该表充满了包含 ID 和周访问者数量的记录。拥有2年约200+个网站的记录。
总而言之,我想知道两件事:
1.) - “2009 年第 54 周网站 somethingonline.com 有 300 名访问者”(当然容易。我可以做到)
2.) - “网站 sometingonline.com 是该周得分最高的 8% 网站之一。”
现在,我怎样才能得到 2 号???当然,我想知道每周在所有网站中所占的百分比,因此我得到如下列表:
- sometingonline1.com - 300 位访问者 - 8% 的网站得分达到或高于此水平
- sometingonline2.com - 400 位访问者 - 4% 的网站得分为这样或更高
- sometingonline3.com - 500 位访问者 - 2% 的网站得分达到或超过此水平
- 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/