mysql的sql排名
一直感觉oracle分析函数强大,总觉得MySQL中缺少太多类似函数, 但发现,mysql中引入sql中的变量,使得sql可能非常的灵活,这几天做一个排名的内容,
当1,2,3名成绩相等时,他们都是第二名, 当第4,5名相等时他们都是4.5名。
才下列出一些代码,通过排序然后把变量赋值于上一行的值,然后计算,感觉变量的引入能实现很多复杂的算法,oracle中如果是单个的分析函数基本都是可以实现,
感觉只要思维在,什么语言都大同不异
点击(此处)折叠或打开
成都创新互联是专业的芷江网站建设公司,芷江接单;提供成都网站建设、网站设计,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行芷江网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
-
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
不解释,自我感受一下
分享文章:mysql的sql排名
路径分享:
http://dzwzjz.com/article/pcodos.html