上から2番目をSQLで取得する。※3番目でも4番目でも (SQL:14070)

Questions
普通のSQL文だと一番多い/一番少ないを求めるのは簡単です。ただ、2番目を求めることはできません
 そこで大活躍となるのがRow_numberの出番となります。  まずは通常のRow_numberで一覧を作ってみます。
Select 
 Row_number() 
 over(Order By num desc ) 
 as Row_number
,userid
,num
 From
(
Select
userid,count(userid) as num
From T_alocate 
Group By userid Having num <>1
)X
 一覧が表示されたかと思います
 Row_numberの列をじーっと見てください。

 今求めたいのは2番目ですよね?
 上から2行目に【2】ってありますよね?

 勘のいい人なら、これだけのヒントでピン!と、来るのかなと思いますがどうでしょう?
 ピンとこなかった人はAppendixをのぞいてみてください。
Up:2021/08/29
Re:2021/09/09

Appendix
Click!
今欲しい情報は上から2番目だと思いますが、クエリを実行したら、上から2番目には2という数字が入っていますよね?
 後をそれをWhere区で指定するだけです。
 いわれてみると大したことないですよね。
Select * From
(
Select 
Row_number() 
over(Order By num desc ) as Row_number
,userid
,num
 From
(
Select
userid,count(userid) as num
From T_alocate 
Group By userid Having num <>1
)X
)Y Where Y.Row_number=2
 この方法なら2番目でも3番目でも、上からでも下からでも思いのままです。
超初級
初級
中級
上級
特殊
演習
超初級
初級
中級
上級
特殊
演習
aaaa