Выберите прогрессивную большую запись

Blair спросил: 28 апреля 2018 в 09:12 в: sql

Используя T-SQL, у меня есть запрос, который извлекает следующую информацию из диапазона таблиц. Из этой информации мне нужно выбрать строки, в которых прогоны становятся все больше.

Runs    Name         Opposition              Ground          Date       RN
4   Wickramanayake  Ellerslie          Devonport Domain 25-26/11/2016   1
51  Mahoney         Ellerslie          Devonport Domain 25-26/11/2016   2
157 Beghin          Ellerslie          Devonport Domain 25-26/11/2016   3
10  Olsen           Ellerslie          Devonport Domain 25-26/11/2016   4
9   Thomson         Ellerslie          Devonport Domain 25-26/11/2016   5
12  Chitongo        Ellerslie          Devonport Domain 25-26/11/2016   6
40  McKenzie        Ellerslie          Devonport Domain 25-26/11/2016   7
1   Wall            Ellerslie          Devonport Domain 25-26/11/2016   8
0   Duncraft        Ellerslie          Devonport Domain 25-26/11/2016   9
0   Beghin          Ellerslie          Devonport Domain 25-26/11/2016   10
0   Olsen           Ellerslie          Devonport Domain 25-26/11/2016   11
0   Thomson         Ellerslie          Devonport Domain 25-26/11/2016   12
0   Chitongo        Ellerslie          Devonport Domain 25-26/11/2016   13
0   McKenzie        Ellerslie          Devonport Domain 25-26/11/2016   14
0   Hinds           Ellerslie          Devonport Domain 25-26/11/2016   15
0   Wall            Ellerslie          Devonport Domain 25-26/11/2016   16
0   Brungar         Ellerslie          Devonport Domain 25-26/11/2016   17
0   Duncraft        Ellerslie          Devonport Domain 25-26/11/2016   18
2   Beghin          Suburbs New Lynn    Vauxhall Road   7/10/2017   19
0   Wickramanayake  Suburbs New Lynn    Vauxhall Road   7/10/2017   20
7   Olsen           Suburbs New Lynn    Vauxhall Road   7/10/2017   21
15  Thomson         Suburbs New Lynn    Vauxhall Road   7/10/2017   22
0   Hinds           Suburbs New Lynn    Vauxhall Road   7/10/2017   23
34  Hira            Suburbs New Lynn    Vauxhall Road   7/10/2017   24
0   Wall            Suburbs New Lynn    Vauxhall Road   7/10/2017   25
5   Brungar         Suburbs New Lynn    Vauxhall Road   7/10/2017   26
8   Duncraft        Suburbs New Lynn    Vauxhall Road   7/10/2017   27
0   Strain          Suburbs New Lynn    Vauxhall Road   7/10/2017   28
74  Beghin          Ellerslie           Vauxhall Road   14/10/2017  29

Таким образом, набор результатов (используя эти данные) будет содержать только первые три строки, потому что первый наивысшие прогоны - 4, а затем следующая самая высокая - 51. Тогда следующая самая высокая - 157. И поскольку нет других прогонов выше 157, записей больше не будет.

Надеюсь, это имеет смысл. . Мне нравится вызов SQL, но иногда я боюсь. Lol

1 ответ

Есть решение
Gordon Linoff ответил: 28 апреля 2018 в 09:16

Я интерпретирую это, начиная с первой строки, получая последующие строки, которые увеличиваются по значению. Тот факт, что это первые три строки в примере, является совпадением.

Если я правильно понимаю, вам нужны строки, которые определяют кумулятивный максимум:

select t.*
from (select t.*, max(runs) over (order by rn) as cumalative_runs
      from t
     ) t
where cumulative_runs = runs;
Blair ответил: 29 апреля 2018 в 06:52
Вы, сэр, чемпион и ученый .. работает как абсолютное обаяние