SQL Group по вложенным - PullRequest
       5

SQL Group по вложенным

0 голосов
/ 23 июня 2011

Нам нужно найти ТОП 10 учеников (максимальный балл 500) из каждой секции класса.

Пример:

Section  Name   Total Score  

     A   Paul   499  
     A   Gustuv 498 
         ...upto top 10  

     B   Henrik  499  
     B   John   498   
         ...upto 10

Допустим, у него есть две таблицы STUDENT и CLASS.

Как можно отобразить результаты таким образом, используя sql в oracle?

Ответы [ 2 ]

1 голос
/ 23 июня 2011

Попробуйте ...

У меня нет вашей схемы для тестирования .... Но вы должны быть в состоянии получить общее представление.

with rank_query as (
SELECT section, name, score,
       RANK() OVER (PARTITION BY section ORDER BY score) score_rank
FROM   myTable
)

select * from rank_query where score_rank <= 10;

Спасибо,

Джеффри Кевин Прай

0 голосов
/ 23 июня 2011

Используйте аналитические функции RANK или DENSE_RANK (в зависимости от того, что вы подразумеваете под "топ-10").

http://www.oracle -base.com / article / misc / RankDenseRankFirstLastAnalyticFunctions.PHP

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...