MySQL中的百分比函数研究(mysql百分比函数)

MySQL中的百分比函数研究

MySQL数据库中的百分比函数:PERCENT_RANK()和RANK(),在做一些数据分析的时候非常有用。这两个函数都可以用来计算一组数据的百分比排名。PERCENT_RANK()函数能够清楚的告诉你一个数据占整个数据集的百分比排名,而RANK()函数则可以计算出数据在数据集中的实际位次。在使用这两个函数前,最好先对原始数据进行排序,使结果更精准。

基本语法:

`1、PERCENT_RANK()`

PERCENT_RANK()函数用于取给定表达式当前行位次在该表达式指定组内所占的百分比。该函数返回值在以下范围内:[0,1]。

语法:

PERCENT_RANK() OVER (PARTITION BY partition_expr ORDER BY sort_expr)

`2、RANK()`

RANK()函数也可以用来计算某一行在数据集中的排名,不同于PERCENT_RANK()函数,RANK()函数计算出的是实际排名,而不是百分比排名,结果可能出现重复位次。

语法:

RANK() OVER (PARTITION BY partition_expr ORDER BY sort_expr)

示例:

假设存在一张表格‘salary’,有三列分别是:id,name,salary:

mysql> select * from salary;
+----+--------+--------+
| id | name | salary |
+----+--------+--------+
| 1 | Alice | 9000 |
| 2 | Bob | 8500 |
| 3 | Cary | 8500 |
| 4 | David | 9000 |
| 5 | Edward | 4000 |
+----+--------+--------+

我们想要对比这五个人的薪资的百分比排名情况:

mysql> select name,salary,percent_rank()over(order by salary desc) from salary;
+--------+--------+----------------------------------------------+
| name | salary |percent_rank()over(order by salary desc) |
+--------+--------+----------------------------------------------+
| Alice | 9000 | 0 |
| David | 9000 | 0 |
| Bob | 8500 | 0.33 |
| Cary | 8500 | 0.33 |
| Edward | 4000 | 1 |
+--------+--------+----------------------------------------------+

用RANK()函数可以计算出每个人的实际位次情况:

mysql> select name,salary,rank()over(order by salary desc) from salary;
+--------+--------+----------------------------------------------+
| name | salary | rank()over(order by salary desc) |
+--------+--------+----------------------------------------------+
| Alice | 9000 | 1 |
| David | 9000 | 1 |
| Bob | 8500 | 3 |
| Cary | 8500 | 3 |
| Edward | 4000 | 5 |
+--------+--------+----------------------------------------------+

从上面的例子可以看出,MySQL中的百分比函数是非常实用的,它可以帮助我们得出统计数据中某些行的百分比排名,从而通过分析排名结果获得更直观、深入的了解数据集。


数据运维技术 » MySQL中的百分比函数研究(mysql百分比函数)