Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите пронумеровать записи, почти как DENSE_RANK / 6 сообщений из 6, страница 1 из 1
31.07.2019, 10:01
    #39843288
DevIgo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пронумеровать записи, почти как DENSE_RANK
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
SELECT
groupId
,sortIndex
,DENSE_RANK() over(order by sortIndex) resultSortIndex
,DENSE_RANK() over(order by groupId) resultSortIndexByGroup
from (
select
22132135 groupId
,1 sortIndex
union all
select
3233 groupId
,2 sortIndex
union all
select
3233 groupId
,3 sortIndex
union all
select
3233 groupId
,4 sortIndex
union all
select
563465 groupId
,5 sortIndex
) t



Хотелось бы в соответствии с сортировкой по sortIndex по одинаковым groupId получить одинаковые значения номеров по возрастанию
В общем DENSE_RANK вроде позволяет такое сделать - поле resultSortIndexByGroup,но это не то что я хочу, т.к. не учитывается сортировка sortIndex.

Приложил картинку как хотелось бы получить итог
...
Рейтинг: 0 / 0
31.07.2019, 10:35
    #39843301
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пронумеровать записи, почти как DENSE_RANK
Добавьте PARTITION BY GroupId .
...
Рейтинг: 0 / 0
31.07.2019, 10:43
    #39843309
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пронумеровать записи, почти как DENSE_RANK
Опс, поспешил...

Вы хотите получить странную сортировку. Задачу решит, например,

Код: sql
1.
DENSE_RANK() over(order by ASCII(groupId)) resultSortIndexByGroup


или иное выражение, которое задаст требуемый порядок сортировки при нумерации групп.
...
Рейтинг: 0 / 0
31.07.2019, 10:45
    #39843312
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пронумеровать записи, почти как DENSE_RANK
...
Рейтинг: 0 / 0
31.07.2019, 11:28
    #39843342
DevIgo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пронумеровать записи, почти как DENSE_RANK
AkinaОпс, поспешил...

Вы хотите получить странную сортировку. Задачу решит, например,

Код: sql
1.
DENSE_RANK() over(order by ASCII(groupId)) resultSortIndexByGroup


или иное выражение, которое задаст требуемый порядок сортировки при нумерации групп.
Не совсем то, что нужно, т.к. тут просто совпал результат ASCII нужно очередностью, но спасибо)
...
Рейтинг: 0 / 0
31.07.2019, 11:29
    #39843344
DevIgo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пронумеровать записи, почти как DENSE_RANK
Вот так получилось
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
select
groupId
,sortIndex
,DENSE_RANK() over(order by minSortIndex) resultSortIndex
from (
	SELECT
	groupId
	,sortIndex
	,min(sortIndex) over(partition by groupId order by sortIndex) minSortIndex
	from (
	select
	42132135 groupId
	,1 sortIndex
	union all
	select
	3233 groupId
	,2 sortIndex
	union all
	select
	3233 groupId
	,3 sortIndex
	union all
	select
	3233 groupId
	,4 sortIndex
	union all
	select
	563465 groupId
	,5 sortIndex
	) t
) t
order by sortIndex
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите пронумеровать записи, почти как DENSE_RANK / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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