public inbox for [email protected]help / color / mirror / Atom feed
How to remove duplicates in an array and maintain the order? 4+ messages / 4 participants [nested] [flat]
* How to remove duplicates in an array and maintain the order? @ 2023-07-08 15:30 Shaozhong SHI <[email protected]> 0 siblings, 3 replies; 4+ messages in thread From: Shaozhong SHI @ 2023-07-08 15:30 UTC (permalink / raw) To: pgsql-sql <[email protected]> How to remove duplicated values in an array and maintain the order? Regards, David ^ permalink raw reply [nested|flat] 4+ messages in thread
* Re: How to remove duplicates in an array and maintain the order? @ 2023-07-08 15:36 David G. Johnston <[email protected]> parent: Shaozhong SHI <[email protected]> 2 siblings, 0 replies; 4+ messages in thread From: David G. Johnston @ 2023-07-08 15:36 UTC (permalink / raw) To: Shaozhong SHI <[email protected]>; +Cc: pgsql-sql <[email protected]> On Sat, Jul 8, 2023 at 8:30 AM Shaozhong SHI <[email protected]> wrote: > How to remove duplicated values in an array and maintain the order? > Use a for loop in pl/pgsql. David J. ^ permalink raw reply [nested|flat] 4+ messages in thread
* Re: How to remove duplicates in an array and maintain the order? @ 2023-07-08 15:50 Marcos Pegoraro <[email protected]> parent: Shaozhong SHI <[email protected]> 2 siblings, 0 replies; 4+ messages in thread From: Marcos Pegoraro @ 2023-07-08 15:50 UTC (permalink / raw) To: Shaozhong SHI <[email protected]>; +Cc: pgsql-sql <[email protected]> > > How to remove duplicated values in an array and maintain the order? > > select array_agg(unnest) filter (where row_number = 1) from (select unnest, ordinality, row_number() over(partition by unnest order by ordinality) from (select * from unnest('{7,7,5,6,2,2,3,8,5,4,5}'::integer[]) with ordinality) x order by ordinality) x {7,5,6,2,3,8,4} regards Marcos ^ permalink raw reply [nested|flat] 4+ messages in thread
* Re: How to remove duplicates in an array and maintain the order? @ 2023-07-08 16:19 Thomas Kellerer <[email protected]> parent: Shaozhong SHI <[email protected]> 2 siblings, 0 replies; 4+ messages in thread From: Thomas Kellerer @ 2023-07-08 16:19 UTC (permalink / raw) To: [email protected] Shaozhong SHI schrieb am 08.07.2023 um 17:30: > How to remove duplicated values in an array and maintain the order? You can use distinct on () select array_agg(val order by idx) from ( select distinct on (val) val, idx from unnest(array[7,7,5,6,2,2,3,8,7,5,4,1,5]) with ordinality as t(val,idx) order by val, idx ) x This picks the first occurrance of each element. If you want to get the last occurrance of each value use "order by val, idx desc" in the inner select ^ permalink raw reply [nested|flat] 4+ messages in thread
end of thread, other threads:[~2023-07-08 16:19 UTC | newest] Thread overview: 4+ messages (download: mbox mbox.gz follow: Atom feed) -- links below jump to the message on this page -- 2023-07-08 15:30 How to remove duplicates in an array and maintain the order? Shaozhong SHI <[email protected]> 2023-07-08 15:36 ` David G. Johnston <[email protected]> 2023-07-08 15:50 ` Marcos Pegoraro <[email protected]> 2023-07-08 16:19 ` Thomas Kellerer <[email protected]>
This inbox is served by agora; see mirroring instructions for how to clone and mirror all data and code used for this inbox