題目描述
在牛客刷題有乙個通過題目個數的(passing_number
)表,id
是主鍵,簡化如下:
第1行表示id
為1的使用者通過了4個題目;
第6行表示id
為6的使用者通過了4個題目;
請你根據上表,輸出通過的題目的排名,通過題目個數相同的,排名相同,此時按照id
公升序排列,資料如下:
id
為5的使用者通過了5個排名第1,
id
為1和id為6的都通過了2個,並列第2
解法
根據題目的要求可以先通過子查詢獲得id
和t_rank
(根據number
降序排序獲得的排名)作為r表,再將passing_number
表和r
表內連線,最後按照number
列降序排列。
select p.id, number, t_rank
from passing_number p join
(select id, dense_rank(
)over
(order
by number desc
)as t_rank
from passing_number) r
on p.id = r.id
order
by number desc
演算法練習 刷演算法題時的技巧
變數型別 讀入 輸出 函式reverse 全排列注意 排序最簡潔的寫法是while t t 5 while t 轉換進製 int ans 31 num 0 dowhile sum 0 for int i num 1 i 0 i 資料範圍 2 632 263,2 632 263 1 資料範圍 2 31...
SQl刷題 查詢比之前高的溫度
使用datediff來比較兩個日期型別的值,因此我們可以通過將weather與自身結合,然後使用datediff 比較 select weather.id as id from weather join weather w on datediff weather.date w.date 1and w...
SQL刷題 查詢返回符合條件的結果
方法一 使用where子句和or邏輯判斷 根據定義,滿足下面的其中乙個條件 條件1 面積超過300萬 條件2 人口超過2500萬 先使用下面語句獲得滿足條件1的大國家 select name,population,area from world where area 3000000 然後使用下面的語...