powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Задача с полем типа массив
7 сообщений из 7, страница 1 из 1
Задача с полем типа массив
    #39187315
Бока
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть такая таблица:
Код: plsql
1.
2.
3.
CREATE TABLE "public"."test" (
"key1" int4 DEFAULT nextval('test_key1_seq'::regclass) NOT NULL,
"reach_pois" int4[]);


В ней следующие записи:
Код: plsql
1.
select * from test LIMIT 10;


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
1	{110586}
2	{110586}
3	{110586}
4	{126493,126489,47886,47888,49456,49436,49438,49440,44489,44487,46145,46156,46160,46148,46160,46156,46145,44487,44489,49440,49438,49436,49456,47888,47886,126489,126493}
5	{}
6	{127153,46483,127153,46483,127153,46483,127153,127151,127158,127157,127162,128518,128519,127160,127167,127165,46492,46491,48239,43954,43957,45516,45518,45515,43955,43953,43949,43947,48207,48209,48213,48214,46486,46487,46480,127152,127154,128545,123860,123887,125464,133631,133632,135201,135209,129226,129230,130882,130883,114578,115853,115851,111543,113124,121111,122638,122640,117582,119219,119215,102583,102604,100932,100934,100940,99317,99315,100679,100672,100670,99118,99119,109384,109389,107813,106394,106388,104792,104790,104785,90390,90388,90396,88358,88357,87095,87096,87098,85559,85556,96641,96638,95082,93229,91847,91861,429228,427156,425797,424029,424031,436895,436896,435068,435067,433049,433031,431037,443288,441113,441110,441107,439473,437659,450405,451307,451308,449499,448024,448023,445941,455647,457564,452040,454152,462971,462977,462972,462974,462968,462970,454103,454098,454099,454108,454109,454105,452062,452064,452065,452064,452062,454105,454109,454108,454099,454098,454103,462970,462968,462974,462972,462977,462975,462987,462991,454149,454142,454143,452046,452045,457572,457571,457569,455711,455710,455709,445939,445940,448033,448037,448039,449546,449549,451318,451319,451316,450388,450387,437520,437529,437526,439461,439465,439464,441055,441049,443241,443243,431005,431003,432812,435088,435090,436872,423992,424004,425767,425766,427392,427395,429126,429123,427394,429123,429126,427395,427392,425766,425767,424004,423992,436872,435090,435088,435085,435081,435093,435092,436877,436881,436880,423990,423994,423993}
7	{123879}
8	{123879}
9	{123879}
10	{126493,126489,47886,47888,49456,49436,49438,49440,44489,44487,46145,46156,46160,46148,40973,46148,46160,46156,46145,44487,44489,49440,49438,49436,49456,47888,47886,126489,126493}

Нужно сделать запрос, который для всех записей таблицы, в которых количество элементов массива > 1, выводил бы количество уникальных для всей таблицы пар соседей.
На примере последней, приведённой выше строки с массивом элементов, пары соседей - это:
- 126493,126489;
- 126489,47886;
- 47886,47888;
- 47888,49456;
- и т.д., т.е. каждый второй элемент в очередной паре соседей является первым элементом в следующей паре соседей.
...
Рейтинг: 0 / 0
Задача с полем типа массив
    #39188480
SharuPoNemnogu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT
  distinct (arstr ||  ',' || lead(arstr) OVER (PARTITION BY key1)) as item
FROM (
  SELECT
    key1, unnest(reach_pois) arstr
  FROM test
  WHERE ARRAY_LENGTH(reach_pois, 1) > 1
) z;
...
Рейтинг: 0 / 0
Задача с полем типа массив
    #39191701
Бока
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SharuPoNemnogu,

спасибо
...
Рейтинг: 0 / 0
Задача с полем типа массив
    #39191992
Бока
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SharuPoNemnogu,

А не выпадает ли в Вашем запросе самый первый элемент json массива из следующей записи ? Ведь функция "lead" действует (насколько я понимаю) только в рамках unnest-а по каждому значению "key1" ?
...
Рейтинг: 0 / 0
Задача с полем типа массив
    #39192123
SharuPoNemnogu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бока,

ничего там не должно выпадать, проверьте на паре записей, посмотрите что выводит. На демо данных все норм отработало. Единственное null выбирается, т.к. lead на последнем элементе выведет null
...
Рейтинг: 0 / 0
Задача с полем типа массив
    #39192467
Бока
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SharuPoNemnogu,

Я проверил на одной маленькой таблице из 20 записей - все нормально. Но в этой таблице у меня нет записей, в которых бы пары повторялись бы из записи в запись, повторение только в внутри одной записи. А в реале парыц могут повторяться в разных записях.

Учитывает ли это Ваш запрос ?
...
Рейтинг: 0 / 0
Задача с полем типа массив
    #39192485
SharuPoNemnogu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бока,

ну добавьте повторяющиеся записи, да проверьте. там же distinct стоит
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Задача с полем типа массив
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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