Задача с полем типа массив

Есть такая таблица:

CREATE TABLE "public"."test" (
"key1" int4 DEFAULT NEXTVAL('test_key1_seq'::regclass) NOT NULL,
"reach_pois" int4[]);

В ней следующие записи:
SELECT * FROM test LIMIT 10;

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;
- и т.д., т.е. каждый второй элемент в очередной паре соседей является первым элементом в следующей паре соседей.

Back to top

(С) Виктор Вислобоков, 2008-2023