MySQL對資料表進行資料彙總並得出排名

2021-10-23 11:21:10 字數 1344 閱讀 5880

問題描述:

現有**t1,t1中有checkdoctor(檢查人員)字段,無count(匯**計)和rank(排名字段),現要求在指定條件下獲取各個檢查人員的工作量排名,允許並列排名。由於使用mysql資料庫,沒有rank函式可使用,該如何實現呢?

解決思路:

在mysql中,可借助rownum實現查詢排名的功能,

說明:在msql中可使用@rownum宣告變數,使用:=賦值,詳見下面的描述

@rownum := @rownum + 1 中 := 是賦值的作用,這句話的意思是先執行@rownum + 1,然後把值賦給@rownum;

(select @rownum := 0) r 這句話的意思是設定rownum欄位的初始值為0,即編號從1開始

實現**:

select @rownum:=@rownum+1 as rownum,if(@total = cnt ,@rank ,@rank :=@rownum) as rank ,

@total := cnt as total, der.* from

(select ssuppliercode,checkdoctor,count(*) as cnt from t1 where ssuppliercode='01'

group by checkdoctor order by cnt desc

) as der,(select @rank := 0 ,@rownum := 0 ,@total := null) as t;

mysql中的查詢結果:

) as der,(select @rank := 0 ,@rownum := 0 ,@total := null) as t) as a where a.checkdoctor='李四';

查詢結果如下:

在實現過程中,受到博友的啟發在此表示感謝!

MySQL對資料表已有表進行分割槽表

對現有的乙個表進行建立分割槽表,並把資料遷移到新錶,可以按時間來分割槽,然後這錶不是實時更新,每天有一次插入操作。時間比較充裕,但是伺服器上有其他應用,使用較小資源為主要方式。1 可以使用alter table來進行更改表為分割槽表,這個操作會建立乙個分割槽表,然後自動進行資料copy然後刪除原表,...

django刪除資料表以及對資料表進行改動更新

實在是氣的不行,被坑的太難受了,為了防止有人繼續走彎路,我來寫這篇文章了。本人屬於大學需要做專案,自己摸索著使用django,所以最開始django的資料庫就是個老大難的問題,當我生成的資料表我想刪除時,我去網上查了很多解答,那些辦法不僅複雜的不行,還無數次的把我的資料庫整崩,然後我就不斷的重新建新...

MySQL對資料表已有表進行分割槽表的實現

目錄 對現有的乙個表進行建立分割槽表,並把資料遷移到新錶,可以按時間來分割槽,然後這錶不是實時更新,每天有一次插入操作。時間比較充裕,但是伺服器上有其他應用,使用較小資源為主要方式。1 可以使用alter table來進行更改表為分割槽表,這個操作會建立乙個分割槽表,然後自動進行資料copy然後刪除...