powered by simpleCommunicator - 2.0.19     © 2024 Programmizd 02
Map
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Ранжирующие функции с подгруппой
3 сообщений из 3, страница 1 из 1
Ранжирующие функции с подгруппой
    #40136163
Максим Александровитч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет.Подскажите,что я делаю не так.
Нужно получить разбиение на подгруппы

Имеем

declare @src table
(
DateIn date not null primary key,
Val decimal (12,2)
);

insert
into @src (DateIn, Val)
values ('2021-12-28', 123.45),
('2021-12-29', 123.45),
('2021-12-30', 98.75),
('2021-12-31', 43.12),
('2022-01-11', 43.12),
('2022-01-12', 123.45);


Нужно получить
DateIn Val StepNo
2021-12-28 123.45 1
2021-12-29 123.45 1
2021-12-30 98.75 2
2021-12-31 43.12 3
2022-01-11 43.12 3
2022-01-12 123.45 4

Получаю
DateIn Val rnk
2021-12-28 123.45 1
2021-12-29 123.45 1
2021-12-30 98.75 2
2021-12-31 43.12 3
2022-01-11 43.12 3
2022-01-12 123.45 1

Как мне пронумеровать 4-ю группу,собственно,4-м порядковым номером?
Вот эту 2022-01-12 123.45 1
Кажется,все очень просто,но что-то я закопался..
Подскажите,пож-та


Код мой.

with tabless as(
select
DateIn
,Val
,DENSE_RANK() OVER(ORDER BY val desc) rnk
from @src
)


select
a.DateIn
,a.Val
,a.rnk
from tabless a
order by DateIn
...
Рейтинг: 0 / 0
Ранжирующие функции с подгруппой
    #40136177
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
WITH 
cte AS ( 
    SELECT *,
           CASE WHEN Val = LAG(Val) OVER (ORDER BY DateIn)
                THEN 0
                ELSE 1 
                END AS val_changed
    FROM src 
)
SELECT *, 
       SUM(val_changed) OVER (ORDER BY DateIn) AS adjacent_group_no
FROM cte
ORDER BY DateIn


https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=d9c181b1b6c4c9026e4a404f649c5d8f
...
Рейтинг: 0 / 0
Ранжирующие функции с подгруппой
    #40136178
Максим Александровитч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

Блин..отличное и простое решение..я там уже пошел через временные таблицы
спс
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Ранжирующие функции с подгруппой
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (0):
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]