postgresについて質問です。

Writer: admin Type: regalmach Date: 2019-01-08 00:00
postgresについて質問です。user_tableというテーブルにuser_name,a,bという列があります。ここからRANK()を使って、aの数値が高い順、bの数値が高い順に並べるのに、aの場合select user_name,a,RANK() over (order by a desc) FROM user_table;のように書いているのですが、これで作られたテーブルからさらに1位だけ、2位だけ、と取り出すことは可能でしょうか?手元にスマホしかなく手打ちのため、読みにくくて申し訳ありません。共感した0###クエリーを仮想テーブル化することで可能です。例えば2位までを出力する場合select user_name,a,rankfrom(select user_name,a,RANK() over (order by a desc) as rankFROM user_table) xwhere x.rank <=2;となります。ナイス0
###解決できました!ありがとうございます。
###> select user_name,a,> RANK() over (order by a desc) > FROM user_table;これだとaについての順位を求めているだけです。> aの数値が高い順、bの数値が高い順のbについてどうしたいのでしょう。とりあえずaの順位が1のものを取得したいならselect user_name,afrom (select user_name,a,RANK() over (order by a desc) rnkFROM user_table ) qwhere rnk=1;ですが。2位のものだけなら最後の、rnk=1をrnk=2に1位と2位ならselect user_name,a,rnkfrom (select user_name,a,RANK() over (order by a desc) rnkFROM user_table ) qwhere rnk<=2;です。ナイス1

 

TAG