Skip site navigation (1) Skip section navigation (2)

Re: Re: Аналог distinct для массива

From: Oleg Bartunov <oleg(at)sai(dot)msu(dot)su>
To: Dmitriy MiksIr <miksir(at)maker(dot)ru>
Cc: pgsql-ru-general(at)postgresql(dot)org
Subject: Re: Re: Аналог distinct для массива
Date: 2008-02-21 16:39:03
Message-ID: Pine.LNX.4.64.0802211938510.31180@sn.sai.msu.ru (view raw or flat)
Thread:
Lists: pgsql-ru-general
On Thu, 21 Feb 2008, Dmitriy MiksIr wrote:

> Да, но того что может помочь не нашел. Может смотрел не туда.

там есть функция uniq

>
> Единственная идея, что появилась - это сложить как-то все массивы по строкам, 
> и на итоговый сказать uniq ... но красивая реализация в голову не идет.
>
> Или написать функцию, которая будет раскрывать масив и выдавать результат как 
> набор строк, т.е.
> arr     | other
> [1,2,3] | bla
> преобразовывать в
> 1 | bla
> 2 | bla
> 3 | bla
> только можно ли силами plpgsql пройтись циклом по массиву?
>
> Oleg Bartunov пишет:
>> Если это integer arrays, то есть 
>> http://www.sai.msu.su/~megera/postgres/gist/intarray/README.intarray
>> Заодно получишь много чего приятного :)
>> 
>> Олег
>> On Thu, 21 Feb 2008, Dmitriy MiksIr wrote:
>> 
>>>
>>>  Приветствую!
>>>
>>>  Есть необходимость выбирать уникальные значения из всей таблицы по полю 
>>> integer[] (уникальные как по строкам, так и по массиву). Делаю сейчас это 
>>> так (кусок функции):
>>> SELECT max(array_upper(marks,1)) INTO size FROM firms WHERE ...;
>>> FOR resrow IN
>>>   SELECT distinct(f.marks[g.n]) as result
>>>     FROM firms f, generate_series(1,size) g(n) WHERE ...;
>>> ...
>>> Не очень нравится такое решение своей красотой (ибо если, например, одна 
>>> строка - 100 элементов массива, а остальные - по 2-3, получается очень 
>>> накладно). Может есть другие решения?
>>> 
>>> 
>>> ---------------------------(end of broadcast)---------------------------
>>> TIP 3: Have you checked our extensive FAQ?
>>>
>>>              http://www.postgresql.org/docs/faq
>>> 
>>
>>     Regards,
>>         Oleg
>> _____________________________________________________________
>> Oleg Bartunov, Research Scientist, Head of AstroNet (www.astronet.ru),
>> Sternberg Astronomical Institute, Moscow University, Russia
>> Internet: oleg(at)sai(dot)msu(dot)su, http://www.sai.msu.su/~megera/
>> phone: +007(495)939-16-83, +007(495)939-23-83
>> ---------------------------(end of broadcast)---------------------------
>> TIP 9: In versions below 8.0, the planner will ignore your desire to
>>       choose an index scan if your joining column's datatypes do not
>>       match
>> 
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 6: explain analyze is your friend
>

 	Regards,
 		Oleg
_____________________________________________________________
Oleg Bartunov, Research Scientist, Head of AstroNet (www.astronet.ru),
Sternberg Astronomical Institute, Moscow University, Russia
Internet: oleg(at)sai(dot)msu(dot)su, http://www.sai.msu.su/~megera/
phone: +007(495)939-16-83, +007(495)939-23-83

In response to

Responses

pgsql-ru-general by date

Next:From: Dmitriy MiksIrDate: 2008-02-21 16:56:37
Subject: Re: Аналог distinct для массива
Previous:From: Dmitriy MiksIrDate: 2008-02-21 14:26:19
Subject: Re: Аналог distinct для массива

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group