2番目をsqlで!知りたいのは上から1番目じゃないみたいです。 – ざったなぶろぐ
より分かりやすく!格安スマホのギアベストクーポン紹介ページリニューアル!!(毎日更新です!!)
アイドルランキング

メジャーどころからマイナーな子まで、人気順でランキング!

グラフを見る!!

2番目をsqlで!知りたいのは上から1番目じゃないみたいです。

この記事は約 4 分で読めます。

このページではSQL文を書く上で上級者向けのテクニックです。

と言っても慣れてしまえばたいしたことはありません。大事な事は

そんなやり方があるんだ!!

という、その事実に気づくところです。

こういうのは普通だれも教えてくれないですからね。

 

上から2番目を求める事の難しさ

激安特価品サーチ】

集合関数での限界

上から1番目を求める!

といった内容であれば真っ先に思いつくのが集合関数のMAXですね。これを使えば1番大きな値を求める事ができます。

そう

1番上の値しかだめなんですね・・・・・

また、以下のような表があったとします。

 

集合関数のMAXで求めれるのは

+++++++++++++++++++++

くだもの → 5000円

さかな  → 10000円

おにく  → 500円

 

+++++++++++++++++++++

です。

でも、みんなが知りたいのって

+++++++++++++++++++++

くだもの → メロン(5000円)

さかな  → くえ(10000円)

おにく  → うま(500円)

+++++++++++++++++++++

って情報ですよね。

副問い合わせ等を使えば求められますが、書き方が非常にややこしくなります。

そこで、今回お伝えする上級テクニックは以前説明した 以下の二つの内容を利用する事になります。

その5)SQLテクニック 番号を振る(ROW_NUMBER、RANK、DENSE_RANK)

その2)SQLテクニック Selectした結果をSelectする

row_numberとSelectした結果をSelectするやり方で上から2番目を求める。

 

エクセルで作ったサンプルの方が分かりやすそうなのでそのままテーブルも作ってみました。

試してみたい人は以下をコピペしてテーブルを作ってください。

++++++++++++++++++++++

くだもの リンゴ 100
くだもの みかん 150
くだもの スイカ 3000 ←二番目
くだもの メロン 5000 ←一番高い
さかな さば 100
さかな くえ 10000 ←一番高い
さかな さんま 200 ←二番目
さかな さより 40
おにく ぶた 150
おにく うし 300 ←二番目
おにく うま 500 ←一番高い

++++++++++++++++++++++

※TSV形式になってます。

それではテーブルを見てみましょう。

ここにrow_number関数で大項目毎に連番を振ってみます。

文法は以下です。

row_number() over(partition by [大項目] order by [値段] desc ) as num

 

備考書いておいてよかったです。

説明が省けました。

 

各項目ごとに、2番目の値が一目でわかるようになりました。

あとは、この結果に対して

その2)SQLテクニック Selectした結果をSelectする

をするだけです。

クエリにするとこの様な感じです。

 

ここまでは元の結果と同じですね。

架空のテーブルとして XX を定義しています。

このXXに対して、 XX.num=2 とする事で2番目に大きな値を求める事が出来ます。

クエリは此方です。

見事に2番目の値だけを求める事ができました!

また、本当はみんなが欲しいであろう 中項目 の値もしっかりわかります。

この方法を利用すれば、

2番目に大きな値や2番目に少ない値なども取得できます。つまり応用の範囲が広いと言う事ですね。※asc descを切り替えることによって

 

 

関連記事(一部広告含む)
スポンサーリンク
4.上級者向けクエリ
kazuyoumeをフォローする
ざったなぶろぐ