加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

mysql的sql排名

发布时间:2022-03-25 02:09:37 所属栏目:编程 来源:互联网
导读:一直感觉oracle分析函数强大,总觉得mysql中缺少太多类似函数, 但发现,mysql中引入sql中的变量,使得sql可能非常的灵活,这几天做一个排名的内容, 当1,2,3名成绩相等时,他们都是第二名, 当第4,5名相等时他们都是4.5名。 才下列出一些代码,通过排序
     一直感觉oracle分析函数强大,总觉得mysql中缺少太多类似函数,  但发现,mysql中引入sql中的变量,使得sql可能非常的灵活,这几天做一个排名的内容,
     当1,2,3名成绩相等时,他们都是第二名,  当第4,5名相等时他们都是4.5名。
     才下列出一些代码,通过排序然后把变量赋值于上一行的值,然后计算,感觉变量的引入能实现很多复杂的算法,oracle中如果是单个的分析函数基本都是可以实现,
     感觉只要思维在,什么语言都大同不异
 
点击(此处)折叠或打开
 
set @allrow:=0, @lastrn1:=0,@newcnt:=0,@ykmycnt:=0 ,@ykrownum=1 ,@lastxxdm=null;
 
 
select
if( @lastrn1= rn1 , @newcnt, if(rn=rn1,@newcnt:=rn,@newcnt:=(rn+rn1)/2 )) +0 xxpm ,
 @lastrn1:=rn1 ,
if (@ykbjnr=t.xxdm,@allrow,@allrow:=rn) xxrs,
@ykbjnr:=t.xxdm aaa,
t.*
from (
select
if(@ykbjnr=t.xxdm,@ykmycnt := @ykmycnt + 1,@ykmycnt:=1) +0 rn ,
if(@lastxxdm=t.zpm,@ykrownum:=@ykrownum,@ykrownum:=@ykmycnt) +0 rn1 ,
@ykbjnr:=t.xxdm aa, @lastxxdm:=t.zpm bb, t.*
 from tmp_cj t
order by t.xxdm,t.zpm
) t order by t.xxdm,t.rn desc
不解释,自我感受一下。

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读