我做了一个 SQL 查询,根据页面被查看的次数对页面进行排名。例如,
╔══════╦═══════╗
║ PAGE ║ VIEWS ║
╠══════╬═══════╣
║ J ║ 100 ║
║ Q ║ 77 ║
║ 3 ║ 55 ║
║ A ║ 23 ║
║ 2 ║ 6 ║
╚══════╩═══════╝
现在我想做的是使用 SQL 查询找到每个页面的百分位数排名。我想使用的数学非常简单,我只想将已生成的表的行号除以总行数。或者1减去这个值,取决于我的兴趣。
我可以像这样在已经生成的表上执行 COUNT(pages) 操作吗?我意识到这就是我获得总行数的方法。但是有没有命令可以返回行号呢?
为了进一步澄清我的问题,我需要以下结果
╔══════╦════════════════╗
║ PAGE ║ Percentile ║
╠══════╬════════════════╣
║ J ║ (1-1/5)*100 ║
║ Q ║ (1-2/5)*100 ║
║ 3 ║ (1-3/5)*100 ║
║ A ║ (1-4/5)*100 ║
║ 2 ║ (1-5/5)*100 ║
╚══════╩════════════════╝
或者一般来说 (1-(行数)/(COUNT(页))*100
SELECT page,
views,
(1-ranks/totals)*100 Percentile
FROM
(
SELECT page,
views,
@rank:=@rank + 1 ranks,
(SELECT COUNT(*) FROM tableName) totals
FROM tableName a,
(SELECT @rank:=0) s
ORDER BY views DESC
) s
- SQLFiddle 演示 http://sqlfiddle.com/#!2/6e1d9/8
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)