問題:編寫乙個 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 連線所用的套接字檔案...