Mysql SQL秩百分位数
我做了一个SQL查询,它根据页面的浏览次数对页面进行排序。比如说,Mysql SQL秩百分位数,mysql,sql,rank,percentile,Mysql,Sql,Rank,Percentile,我做了一个SQL查询,它根据页面的浏览次数对页面进行排序。比如说, ╔══════╦═══════╗ ║ PAGE ║ VIEWS ║ ╠══════╬═══════╣ ║ J ║ 100 ║ ║ Q ║ 77 ║ ║ 3 ║ 55 ║ ║ A ║ 23 ║ ║ 2 ║ 6 ║ ╚══════╩═══════╝ 现在我想做的是使用SQL查询查找每个页面的百分位排名。我想用的数学很简单,我只想用已经生成的表的行数除以总行数。或者1减去这
╔══════╦═══════╗
║ PAGE ║ VIEWS ║
╠══════╬═══════╣
║ J ║ 100 ║
║ Q ║ 77 ║
║ 3 ║ 55 ║
║ A ║ 23 ║
║ 2 ║ 6 ║
╚══════╩═══════╝
现在我想做的是使用SQL查询查找每个页面的百分位排名。我想用的数学很简单,我只想用已经生成的表的行数除以总行数。或者1减去这个值,取决于我的兴趣
我可以像这样对已经生成的表进行计数(页数)吗?我意识到这就是我获得总行数的方法。但是有没有返回行号的命令
为了进一步澄清我的问题,我需要以下结果
╔══════╦════════════════╗
║ 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-(行号)/(计数(页数))*100
然后在第10段中,我们可以看到这样一条清晰的语句:“作为一般规则,除了SET语句之外,您永远不应该给用户变量赋值并读取同一语句中的值。[…]涉及用户变量的表达式的求值顺序是未定义的。”您使用的是什么?
RDBMS
代表关系数据库管理系统。RDBMS是SQL
以及所有现代数据库系统(如MS SQL Server、IBM DB2、Oracle、MySQL等)的基础。您还可以说明您想要的结果是什么吗?MySQL。我将添加一个额外的表,其中包含我正在寻找的示例。请执行以下操作:ks:D
说明DBMS的另一个原因是大多数DBMS已经内置了这样一个函数(而不是MySQL)。
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