mysql如何進行統計求和並計算出名次

2021-08-14 12:28:55 字數 2268 閱讀 2669

對應的mysql語句為:

select personid, totalscore,personname,

if(@de > totalscore, @rank:=@rank+@num+1, @rank) rank,

if(@de = totalscore, @num:=@num, @num:=0),

@de:=totalscore from(

select @de:=0, @rank:=1, @num:=0,personname,personid,sum(score) totalscore

from person

group by personid,personname order by totalscore desc) tmp

執行之後計算出的結果為:

rank為統計排名的名次。

名次有的需求或許不是需要 1 2 2 3形式的排名,而是需要 1  2 2 4

那麼只需要把sql語句改為

select personid, totalscore,personname,

if(@de > totalscore, @rank:=@rank+@num+1, @rank) rank,

if(@de = totalscore, @num:=@num+1, @num:=0),

@de:=totalscore from(

select @de:=0, @rank:=1, @num:=0,personname,personid,sum(score) totalscore

from person

group by personid,personname order by totalscore desc) tmp

即可

結果顯示為:

如果需要給查詢的資料加條件,比如只對personid 為1001,1003的人員進行統計排名:

select personid, totalscore,personname,

if(@de > totalscore, @rank:=@rank+@num+1, @rank) rank,

if(@de = totalscore, @num:=@num, @num:=0),

@de:=totalscore from(

select @de:=0, @rank:=1, @num:=0,personname,personid,sum(score) totalscore

from person where personid in ("1001","1003")

group by personid,personname order by totalscore desc) tmp

結果為:

接下來是統計某人的資料以及排名情況:

select personid, totalscore, personname, rank from (

select personid, totalscore,personname,

if(@de > totalscore, @rank:=@rank+@num+1, @rank) rank,

if(@de = totalscore, @num:=@num, @num:=0),

@de:=totalscore from(

select @de:=0, @rank:=1, @num:=0,personname,personid,sum(score) totalscore

from person

group by personid,personname order by totalscore desc) tmp ) tmp2 where personid="1003"

計算結果為:

如何進行mysql的優化

1 設計表的時候考慮選擇什麼樣的儲存引擎,myisam不之策事務,但查詢速度快,不過現在一般採用的都是inndb,能符合95 的專案需求。2 避免全表查詢的操作。3 在where 和 order by 的字段建立索引。但索引不是越多越好,會使insert 和update 的速度變慢。4 盡量不要採用...

mysql如何進行自動的備份

備份的命令 mysqldump u root password root student home mysql data bak date date y m d h m s sql 首先建立乙個資料夾用來存放備份的資料庫檔案 eg mkdir mysql data bak 建立乙個資料夾 給資料夾付...

如何使用hadoop對海量資料進行統計並排序

b color green size x large 不得不說,hadoop確實是處理海量離線資料的利器,當然,凡是乙個東西有優點必定也有缺點,hadoop的缺點也很多,比如對流式計算,實時計算,dag具有依賴關係的計算,支援都不友好,所以,由此誕生了很多新的分布式計算框架,storm,spark,...