当前位置:首页 > 开发 > 数据库 > 正文

MySQL sql Rank()函数实现

发表于: 2014-12-25   作者:crabdave   来源:转载   浏览次数:
摘要:  MySQL sql Rank()函数实现 两列数据,以a列作为分组,查找以b列倒序的第一个。 select a,b,rownum,rank from (select tt.a, tt.b, @rownum:=@rownum+1 rownum,#@rownum变量加1,作为rownumber,

 MySQL sql Rank()函数实现

两列数据,以a列作为分组,查找以b列倒序的第一个。

select a,b,rownum,rank from 
    (select 
         tt.a,
         tt.b,
         @rownum:=@rownum+1 rownum,#@rownum变量加1,作为rownumber,        
         if(@temp=tt.a,@rank:=@rank+1,@rank:=1) as rank,#tt.a字段等于@temp变量,则@rank加1,否则@rank赋值为1
         @temp:=tt.a#将tt.a字段赋予@temp变量 注意该字段赋值顺序,先赋值,再自加减
        
    FROM#以下两表作关联
       (select a,b from cpes_SQ_ANJIANZFWJL 
           group by a,b 
           order by a asc,b desc) tt,#一定要将同组的数据排序到一起,业务上是实际是以a作为分组,需要放前面;b业务上实际是作排序字段
       (select @rank:=0,@rownum:=0,@temp:=null) ee
    ) result
    having rank =1;

 注意 :@temp:=tt.a, 字段顺序,之前将该字段放在最后,发现问题,应该缓存出现了问题,rank列表全部为1,在该SQL执行第二次的时候rank列表才显示正常。

MySQL sql Rank()函数实现

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
SQLServer 2005 新增了排名函数,一共四个,其中RANK() DENSE_RANK() NTILE()这三个函数是制作带有排
create table B ( 店铺 VARCHAR2(100), 销售数量 VARCHAR2(100), 价格 VARCHAR2(100), 日期 DATE )
RANK()既是一个聚合函数,也是一个分析函数 其具体的语法如下: 聚合函数语法: 分析函数的语法: RA
排名函数是 SQL Server2005新加的功能。在 SQL Server2005中有如下四个排名函数: 1.row_number 2.r
排名函数是SQL Server2005新加的功能。在SQL Server2005中有如下四个排名函数:   1.row_number
Oracle分析函数——函数RANK,DENSE_RANK,FIRST,LAST…|转| RANK 功能描述:根据ORDER BY子句中表达式
DENSE_RANK(n1[,n2]...) WITHIN GROUP (ORDER BY col1 [desc|asc] [nulls first|last] [,col2 [desc|
声明:本篇文章是紧接着上一篇文章《》而写的,为了加深自己对RANK()函数和DENSE_RANK()函数的理解
这两天在做报表的过程中遇到如下的问题: 数据用一个交叉表中展现,在保证报表各个分部排序不变的情
原创于2009年08月02日,2009年10月22日迁移至此。 Oracle 分析函数——函数RANK,DENSE_RANK,FIRST,L
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号