2016-11-24 4 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

Да. Но мне удалось получить только одну колонку. Что делать, если есть больше столбцов, и я хотел бы узнать, как это сделать? Есть ли что-нибудь в 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; 
Смежные вопросы