powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / row_number() и нумерация partition
10 сообщений из 10, страница 1 из 1
row_number() и нумерация partition
    #38590886
tadmin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
WITH foo AS
(
  SELECT * FROM (VALUES(128,1099),(128, 1100),(128,1201),(124,1302),(124,1304)) as f (pid, id )
)
SELECT 
pid,id,
row_number() over  ( order by id)  as index
FROM foo as f



Есть список объектов (id) и их родителей (pid). Хотелось бы в один проход получить неразрывную нумерацию еще и по pid в порядке возрастания id.

Вот так:
pididindexpart_index128109911128110021128120131124130242124130452

Не понимаю, возможно ли это без вложенных запросов?
...
Рейтинг: 0 / 0
row_number() и нумерация partition
    #38590940
Lonepsycho
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tadmin,

Код: sql
1.
2.
3.
4.
5.
6.
SELECT 
  f.pid, 
  f.id, 
  row_number() OVER (ORDER BY f.id) 
FROM 
  (VALUES(128,1099),(128, 1100),(128,1201),(124,1302),(124,1304)) AS f (pid, id )
...
Рейтинг: 0 / 0
row_number() и нумерация partition
    #38590941
tadmin,

Курить dense_rank
...
Рейтинг: 0 / 0
row_number() и нумерация partition
    #38590953
Lonepsycho
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tadmin и их родителей (pid)... это промаргал. тогда нет. надо будет делать субселект для этого.
...
Рейтинг: 0 / 0
row_number() и нумерация partition
    #38590957
Lonepsycho
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый Э - Эх,

да, действительно. спасибо :)
...
Рейтинг: 0 / 0
row_number() и нумерация partition
    #38590983
tadmin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый Э - Эхtadmin,
Курить dense_rank
Код: plsql
1.
 dense_rank() OVER (partition by pid ORDER BY id)


Дает нумерацию id внутри одного pid, а нужно глобальную нумерацию самих pid в запросе.

Не вот так нужно:
pididindexpart_index128109911128110022128120133124130241124130452
А вот так:
pididindexpart_index128109911128110021128120131124130242124130452
...
Рейтинг: 0 / 0
row_number() и нумерация partition
    #38590999
Lonepsycho
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tadmin,

Код: sql
1.
dense_rank() OVER (ORDER BY pid, id)
...
Рейтинг: 0 / 0
row_number() и нумерация partition
    #38591011
tadmin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lonepsychotadmin,
Код: sql
1.
dense_rank() OVER (ORDER BY pid, id)



Да нет же. Это просто дает другую сортировку от 1 до 5. А нужно нумерацию pid от 1 до 2. См. пример выше, поле part_index
...
Рейтинг: 0 / 0
row_number() и нумерация partition
    #38591033
Lonepsycho
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tadminLonepsychotadmin,
Код: sql
1.
dense_rank() OVER (ORDER BY pid, id)



Да нет же. Это просто дает другую сортировку от 1 до 5. А нужно нумерацию pid от 1 до 2. См. пример выше, поле part_index

неужели? я как не странно получяю требуемый результат.

Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT 
  f.pid, 
  f.id, 
  row_number() OVER (ORDER BY f.pid DESC, f.id) AS "index", 
  dense_rank() OVER (ORDER BY f.pid DESC) AS part_index
FROM 
  (VALUES(128,1099),(128, 1100),(128,1201),(124,1302),(124,1304)) AS f (pid, id )
...
Рейтинг: 0 / 0
row_number() и нумерация partition
    #38591056
tadmin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lonepsycho,

Нн-да. Я зачем-то делал "over pid, id".
Спасибо!
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / row_number() и нумерация partition
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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