温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

mysql的sql排名

发布时间:2020-08-16 01:27:13 阅读:317 作者:piliskys 栏目:MySQL数据库
亿速云mysql数据库,读写分离,安全稳定,弹性扩容,低至0.3元/天!! 点击查看>>
一直感觉oracle分析函数强大,总觉得mysql中缺少太多类似函数,  但发现,mysql中引入sql中的变量,使得sql可能非常的灵活,这几天做一个排名的内容,
当1,2,3名成绩相等时,他们都是第二名,  当第4,5名相等时他们都是4.5名。
才下列出一些代码,通过排序然后把变量赋值于上一行的值,然后计算,感觉变量的引入能实现很多复杂的算法,oracle中如果是单个的分析函数基本都是可以实现,
感觉只要思维在,什么语言都大同不异

点击(此处)折叠或打开

  1. set @allrow:=0, @lastrn1:=0,@newcnt:=0,@ykmycnt:=0 ,@ykrownum=1 ,@lastxxdm=null;
  2.  
  3.  
  4. select
  5. if( @lastrn1= rn1 , @newcnt, if(rn=rn1,@newcnt:=rn,@newcnt:=(rn+rn1)/2 )) +0 xxpm ,
  6.  @lastrn1:=rn1 ,
  7. if (@ykbjnr=t.xxdm,@allrow,@allrow:=rn) xxrs,
  8. @ykbjnr:=t.xxdm aaa,
  9. t.*
  10. from (
  11. select
  12. if(@ykbjnr=t.xxdm,@ykmycnt := @ykmycnt + 1,@ykmycnt:=1) +0 rn ,
  13. if(@lastxxdm=t.zpm,@ykrownum:=@ykrownum,@ykrownum:=@ykmycnt) +0 rn1 ,
  14. @ykbjnr:=t.xxdm aa, @lastxxdm:=t.zpm bb, t.*
  15.  from tmp_cj t
  16. order by t.xxdm,t.zpm
  17. ) t order by t.xxdm,t.rn desc
不解释,自我感受一下

亿速云「云数据库 MySQL」免部署即开即用,比自行安装部署数据库高出1倍以上的性能,双节点冗余防止单节点故障,数据自动定期备份随时恢复。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

原文链接:http://blog.itpub.net/134308/viewspace-2136881/

AI

开发者交流群×