Как получить максимальный row_number () для каждой группы в кусте sql - PullRequest
0 голосов
/ 28 июня 2018

Используя row_number () в кустовом SQL, я могу отфильтровать дубликаты / выбрать первый экземпляр идентификатора, выбрав 1 в предложении where, как показано ниже. Что мне нужно здесь, это как найти последний экземпляр в каждой группе.

select * from 
(select c1,c2,c3,c4,c5,id, row_number() over(partition by id ORDER BY id) as seq
from 
table) as cnt where seq = 1;

Мое требование, например, если идентификатор 1212 имеет 3 экземпляра, а 1313 имеет 5 экземпляров в таблице, как показано ниже, я могу использовать вышеупомянутый запрос и получить только один экземпляр, выбрав 1 в предложении where. Но я хочу 3 для идентификатора 1212 и 5 для идентификатора 1313 ниже.

 c1,  c2,  c3,  c4,  c5,  ID     seq
2020 2020 2020 2020 2020 1212     1
2021 2020 2021 2020 2021 1212     2
2022 2020 2022 2020 2022 1212     3
2023 2020 2023 2020 2023 1313     1
2024 2020 2024 2020 2024 1313     2
2025 2020 2025 2020 2025 1313     3
2026 2020 2026 2020 2026 1313     4
2026 2020 2026 2020 2026 1313     5

Ответы [ 4 ]

0 голосов
/ 28 июня 2018

Изменить сортировку по возрастанию на сортировку по убыванию:

select t.* 
from (select c1, c2, c3, c4, c5, id,
             row_number() over (partition by id ORDER BY id desc) as seqnum
------------------------------------------------------------^
      from table
    ) t
where seqnum = 1;
0 голосов
/ 28 июня 2018
select id,max(seq) over(partition by id ORDER BY id)from 
(select *, row_number() over(partition by id ORDER BY id) as seq
from 
table)maxseq
group by id
0 голосов
/ 28 июня 2018

Используйте все эти столбцы в group by и используйте max в row_number()

select c1,c2,c3,c4,c5,id,max(r_no) 
from 
(
    select c1,c2,c3,c4,c5,id, row_number() over (partition by id ORDER BY c1,c2,c3,c4,c5,id) as r_no
    from 
    table
) a
group by c1,c2,c3,c4,c5,id
0 голосов
/ 28 июня 2018

Добавьте дополнительный столбец с COUNT(*) OVER (PARTITION BY id) AS cnt. Это будет содержать количество строк в группе, которое также является максимальным значением ROW_NUMBER для группы.

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