美文网首页
关于【MySQL】rank排名

关于【MySQL】rank排名

作者: 吕吕吕丶 | 来源:发表于2018-09-29 15:02 被阅读0次

前提,需求的来源是这样子的:公司业务中,我想知道某个商品,某一个时间段的销量排名,以下通过另外的例子进行选择。

首先看一张表格

表名字:app_role_copy【数据处理过】

问题:假设现在你是师傅,你想知道你的id从大到小排序,id排在所有id中的第几位。现在数据量少,用眼睛就很容易知道了,在数据大的情况下oracle要得到这个排序也比较容易,但是在mysql中并不容易。

这上面的表我们可以利用 order by id desc,很容易得到数据对id从大到小的排序。

SELECT * FROM app_role_copy AS a ORDER BY a.id DESC ;

select @rownum := @rownum + 1 rownum , role_name from (
        select @rownum := 0 , a.role_code , a.role_name from app_role_copy as a order by a.id desc )  t

我认为:引用中的斜体为建立的一个临时的表,且根据id排好,然后外面的select则把序号rownum赋值好对应的序号,其中 t 作为临时表的表名不能省略,所以得到如下的结果。

按照id从大到小,具有序号的排序结果

所以已经知道了师傅所在的排序。为了只得到师傅排名的结果,所以最后从得到的结果表按照筛选条件,即可得到最终结果。

最终结果

select rownum,role_name from (
        select @rownum := @rownum + 1 rownum , role_name from (
                select @rownum := 0 , a.role_code , a.role_name from app_role_copy as a order by a.id desc )  t ) y
where y.role_name ='师傅';

顺带吐槽一下,上了两三天的业务后,然后因为**,就下掉了。但是作为一个rank demo是合适的。

相关文章

  • MySQL查询笔记

    1.关于mysql实现排名mysql不能用rank()函数,比如: 执行报错,无法直接用rank()函数 但可以用...

  • 关于【MySQL】rank排名

    前提,需求的来源是这样子的:公司业务中,我想知道某个商品,某一个时间段的销量排名,以下通过另外的例子进行选择。 首...

  • MySQL 实现排名(分组排名)

    在MYSQL的最新版本MYSQL8已经支持了排名函数RANK,DENSE_RANK和ROW_NUMBER。但是在5...

  • 在MySQL中实现Rank高级排名函数

    MySQL中没有Rank排名函数,当我们需要查询排名时,只能使用MySQL数据库中的基本查询语句来查询普通排名。尽...

  • 在MySQL中实现Rank高级排名函数 风澈vio

    MySQL中没有Rank排名函数,当我们需要查询排名时,只能使用MySQL数据库中的基本查询语句来查询普通排名。尽...

  • Tableau 美观的排序

    根据订单日期突出显示不同地域的排名 关于排序的故事 rank计算排名、手动排名, 解密:

  • rank函数使用注意事项

    在计算排名时,我们经常会用到rank()函数,rank()函数使用很简单:rank(排名数值,排名计算的列,排序顺...

  • Excel如何对数据进行排序?

    一、关于RANK函数 RANK()计算一个数值在一组数值中的排名,其语法结构为:RANK(number,ref,o...

  • mysql补充:局部变量

    mysql中各种类型变量的定义以及赋值使用MySQL中实现rank排名查询 # 1、局部变量(即@开头的变量)在一...

  • mysql排名问题

    由于mysql不支持rank函数,所以mysql的排名只能通过其他方式实现。创建表并插入记录: 1、查询每门功课成...

网友评论

      本文标题:关于【MySQL】rank排名

      本文链接:https://www.haomeiwen.com/subject/ghlvoftx.html