2016-11-24 9 views
-1

こんにちは、私はsql/postgreSqlを初めて使っています。私は問題がありました、私はそれを行う方法の提案をしたいと思います。私が与えられたテーブルは以下の通りです。テーブルの各列を並べ替え

Student Maths Physics Chemistry 
Joe  80  52  69 
Steff 50  90  95 
James 62  98  42 

上記の表を照会し、生徒をマークに従って降順で並べ替える必要があります。下記参照。事前に

Maths Physcis Chemistry 
Joe  James Steff 
James Steff Joe 
Steff Joe  James 

感謝:)

+1

これは宿題のようです。まだ何か試しましたか? –

+0

うん。しかし、私は1つのコラムしか手に入れることができませんでした。より多くの列があり、それを行う方法を知りたいのですが? PostgreSQLにテーブルのカラム数を返すものはありますか? – Mathew

答えて

0

答えの鍵はwindow functionsです。

with orders as (
    select 
     student, 
     row_number() over (order by maths desc) as m, 
     row_number() over (order by physics desc) as p, 
     row_number() over (order by chemistry desc) as c 
    from ratings 
) 
select 
    m.student as Maths, 
    p.student as Physics, 
    c.student as Chemistry 
from orders as m 
join orders as p on m.m=p.p 
join orders as c on m.m=c.c 
order by m.m;