如何计算mysql DB中“相等或更好”的百分比?

时间:2010-10-24 16:17:27

标签: 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%或更高
  5. 我如何获得这些结果?这在一个查询中是否可行?

    我使用MySQL和PHP。

1 个答案:

答案 0 :(得分:2)

关键是涉及visits表的两个不同“副本”。在此查询中,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脚本中,您可以进行简单的除法以获得所需的百分比。