How do I conditionally select elements of an array?
I figured out your question by brute force. Please give more details next time. I still have no idea what count() is for. You want the min(), max() and mode() from an array. We can do that by splitting out the text value with string_to_array. Then we can unnest the array to get something we can run our aggregate functions on.

Note, mode is a ordered set aggregate. That's why it looks different.

From there the job is simple.

CREATE TABLE foo(v) AS 
VALUES ('112,19.3,142,142,19.3,172,172,20.3,202,202,20.3,232,232,19.3,262,262,19.3,292');

SELECT
  min(x),
  mode() WITHIN GROUP (ORDER BY x),
  max(x)
FROM foo
CROSS JOIN LATERAL unnest(string_to_array(v, ',')) AS x;

 min | mode | max 
-----+------+-----
 112 | 19.3 | 292
(1 row)


Or, if you want that in an array..

SELECT ARRAY[
  min(x),
  mode() WITHIN GROUP (ORDER BY x),
  max(x)
]
FROM foo
CROSS JOIN LATERAL unnest(string_to_array(v, ',')) AS x;

     array      
----------------
 {112,19.3,292}
(1 row)