溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

mysql的sql排名

發(fā)布時間:2020-08-16 01:27:13 來源:ITPUB博客 閱讀:233 作者:piliskys 欄目:MySQL數(shù)據(jù)庫
一直感覺oracle分析函數(shù)強大,總覺得mysql中缺少太多類似函數(shù),  但發(fā)現(xiàn),mysql中引入sql中的變量,使得sql可能非常的靈活,這幾天做一個排名的內(nèi)容,
當(dāng)1,2,3名成績相等時,他們都是第二名,  當(dāng)?shù)?,5名相等時他們都是4.5名。
才下列出一些代碼,通過排序然后把變量賦值于上一行的值,然后計算,感覺變量的引入能實現(xiàn)很多復(fù)雜的算法,oracle中如果是單個的分析函數(shù)基本都是可以實現(xiàn),
感覺只要思維在,什么語言都大同不異

點擊(此處)折疊或打開

  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
不解釋,自我感受一下
向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI