mysql 經典問題 mysql經典排名問題

2021-10-17 21:43:57 字數 933 閱讀 5454

問題:編寫乙個 sql 查詢來實現評分排名。如果兩個分數相同,則兩個分數排名(rank)相同。

評分表ratings

方法一:不運用dense_rank(),運用子查詢

解決這一問題可以分為兩個步驟:

步驟一:降序排列分數

select a.rating as rating from ratings a order by a.rating desc;

步驟二:每個評分對應的排名

思路:可以先提取出大於等於x的所有分數集合h,將h去重後的元素個數就是x的排名。

先提取集合h:

select b.rating from ratings b where b.rating>= x;

再求出集合h去重之後的元素個數:

select count(distinct b.score) from scores b where b.score >= x as rank;

最終將兩個步驟結合:

select a.rating as rating,

(select count(distinct b.rating) from ratings b where b.rating >= a.rating) as "rank"

from ratings a order by a.rating desc;

方法二:運用dense_rank()

select rating, dense_rank() over (order by rating desc) as "rank" from ratings;

附:mysql中rank()和dense_rank()的區別

不同點:rank()是跳躍排序,即如果有兩條記錄重複,接下來是第**別

如:1 2 2 4,會跳過3

dense_rank()是連續排序,即如果有兩條記錄重複,接下來是第二級別

如:1 2 2 3

mysql程式題 MySQL經典程式設計問題

星期數的問題 1 計算日期是週幾 這個問題看似很簡單,可以用mysql內建函式來計算 1 weekday date 其返回值是0 6,0代表monday,6代表sunday 2 dayofweek date 其返回值是1 7,但是它更不好理解,1代表的是sunday,6代表的saturday 3 d...

mysql經典應用架構 MySQL經典架構

mysql主從複製 此種架構,一般初創企業比較常用,也便於後面步步的擴充套件 此架構特點 1 成本低,佈署快速 方便 2 讀寫分離 3 還能通過及時增加從庫來減少讀庫壓力 4 主庫單點故障 5 資料一致性問題 同步延遲造成 mysql mmm架構 通過 drbd 基於 block 塊的複製模式,快速...

mysql 經典操作 mysql常用經典操作

it168 伺服器學院 連線伺服器 mysql u cnscn h 192.168.0.1 d dbname p 3306 protocol name the protocol of connection tcp,socket,pipe,memory s,socket name 連線所用的套接字檔案...