2012-05-18 3 views
-1

Я таблица:выбор степени п высоких оценок

create table marks(stdName nvarchar(30), marks float) 
insert into marks 
select 'std1', 98 
union all select 'std2', 96 
union all select 'std3', 95 
union all select 'std4', 97 
union all select 'std5', 93 

Я хочу создать хранимую процедуру, чтобы выбрать строку с п-го высших марок как данный входным parameter.suppose, если входной параметр 3, он должен показать «std2», 96 или если входной параметр 5, он должен показать «std5», 93.

+0

Можете ли вы объяснить _ "'th" высшие оценки "_? Я не понимаю правила для желаемого результата. –

+0

th означает первый, второй, третий, четвертый, пятый, шестой ... пожалуйста, посмотрите на последнее предложение, которое я представил в качестве своего требования. – nischal

ответ

0

Вы можете использовать cte с ROW_NUMBER функции:

WITH cte AS(
    SELECT stdName 
    ,  marks 
    ,  ROW_NUMBER()OVER(ORDER BY marks DESC)As MarkRank 
    from marks 
) 
SELECT stdName, marks 
FROM cte 
WHERE MarkRank = @rank 
+0

спасибо Тиму Шмельтеру за ответ. будет U plz объяснить мне строку «ROW_NUMBER() OVER (ORDER BY mark DESC) Как MarkRank« – nischal

+0

, когда я запускаю код, я получил ошибку «Должен объявить скалярную переменную« @rank »и как написать хранимую процедуру этого CTE – nischal

-1

Я решил эту проблему. благодаря тиму за его помощью. Я был немного смущен хранимой процедурой.

create procedure showmarks 
(@rank int) 
as 
    begin 

WITH cte AS(
    SELECT stdName 
    ,  marks 
    ,  ROW_NUMBER()OVER(ORDER BY marks DESC)As MarkRank 
    from marks 
) 
SELECT stdName, marks 
FROM cte 
WHERE MarkRank = @rank 
end 
+0

Соответствующим способом было бы [принять] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) и/или ответить вместо ответа на публикацию, ответ. –

+0

@ Тим Шмельтер, ни один человек, которого я попросил, чтобы написать хранимую процедуру, и уйти. и ур ответ заставил меня смутить. Я тоже прокомментировал ответ ур. любым способом благодарим вас за ответ. – nischal

Смежные вопросы